Skip to content

Commit ff5843a

Browse files
authored
GITHUB-2888 - don't fail test with dataProvider if skipped (#2889)
* GITHUB-2888 - don't fail test with dataProvider if skipped
1 parent ebd9dae commit ff5843a

File tree

5 files changed

+67
-1
lines changed

5 files changed

+67
-1
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
Current
2+
Fixed: GITHUB-2888: Skipped Tests with DataProvider appear as failed (Joaquin Moreira)
23
Fixed: GITHUB-2884: Discrepancies with DataProvider and Retry of failed tests (Krishnan Mahadevan)
34
Fixed: GITHUB-2879: Test listeners specified in parent testng.xml file are not included in testng-failed.xml file (Krishnan Mahadevan)
45
Fixed: GITHUB-2866: TestNG.xml doesn't honour Parallel value of a clone (Krishnan Mahadevan)

testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,8 @@ public int invoke(int invCount) {
922922
m_configuration.isPropagateDataProviderFailureAsTestFailure()
923923
|| bag.isBubbleUpFailures();
924924

925-
if (throwable instanceof TestNGException || bubbleUpFailures) {
925+
if (!(throwable instanceof SkipException)
926+
&& (throwable instanceof TestNGException || bubbleUpFailures)) {
926927
tr.setStatus(ITestResult.FAILURE);
927928
m_notifier.addFailedTest(arguments.getTestMethod(), tr);
928929
} else {

testng-core/src/test/java/test/dataprovider/DataProviderTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import test.dataprovider.issue2819.TestClassSample;
4747
import test.dataprovider.issue2819.TestClassUsingDataProviderRetrySample;
4848
import test.dataprovider.issue2819.TestClassWithMultipleRetryImplSample;
49+
import test.dataprovider.issue2888.SkipDataProviderSample;
4950

5051
public class DataProviderTest extends SimpleBaseTest {
5152

@@ -513,6 +514,14 @@ public void ensureTestNGFailsDueToDataProviderFailure2() {
513514
assertThat(testng.getStatus()).isEqualTo(1);
514515
}
515516

517+
@Test(description = "GITHUB-2888")
518+
public void ensureTestNGSkipExceptionWillSkipTestWithDataProvider() {
519+
TestNG testng = create(SkipDataProviderSample.class);
520+
testng.propagateDataProviderFailureAsTestFailure();
521+
testng.run();
522+
assertThat(testng.getStatus()).isEqualTo(2);
523+
}
524+
516525
@Test(description = "GITHUB-2255")
517526
public void ensureDataProviderValuesAreVisibleToConfigMethods() {
518527
TestNG testNG = create(test.dataprovider.issue2255.TestClassSample.class);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package test.dataprovider.issue2888;
2+
3+
import java.util.Arrays;
4+
import org.testng.IDataProviderListener;
5+
import org.testng.IDataProviderMethod;
6+
import org.testng.ITestContext;
7+
import org.testng.ITestListener;
8+
import org.testng.ITestNGMethod;
9+
import org.testng.ITestResult;
10+
import org.testng.SkipException;
11+
12+
public class SkipDataProviderListener implements ITestListener, IDataProviderListener {
13+
@Override
14+
public void onTestStart(ITestResult result) {
15+
skipIfSkipMe(result.getMethod());
16+
}
17+
18+
@Override
19+
public void onTestSkipped(ITestResult result) {}
20+
21+
@Override
22+
public void beforeDataProviderExecution(
23+
IDataProviderMethod dataProviderMethod, ITestNGMethod method, ITestContext iTestContext) {
24+
skipIfSkipMe(method);
25+
}
26+
27+
private static void skipIfSkipMe(ITestNGMethod testNGMethod) {
28+
if (Arrays.asList(testNGMethod.getGroups()).contains("SkipMe"))
29+
throw new SkipException("Test was skipped");
30+
}
31+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package test.dataprovider.issue2888;
2+
3+
import org.testng.Assert;
4+
import org.testng.annotations.DataProvider;
5+
import org.testng.annotations.Listeners;
6+
import org.testng.annotations.Test;
7+
8+
@Listeners({SkipDataProviderListener.class})
9+
public class SkipDataProviderSample {
10+
@Test(groups = "SkipMe")
11+
public void testSkip() {
12+
Assert.fail("This test should not execute, it should be skipped");
13+
}
14+
15+
@DataProvider(name = "dataProvider")
16+
private Object[][] dataProvider() {
17+
return new Object[][] {new Object[] {"test1"}};
18+
}
19+
20+
@Test(dataProvider = "dataProvider", groups = "SkipMe")
21+
public void testSkipWithDataProvider(String a) {
22+
Assert.fail("This test should not execute, it should be skipped");
23+
}
24+
}

0 commit comments

Comments
 (0)