[ https://issues.apache.org/jira/browse/SUREFIRE-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Cam Morris updated SUREFIRE-1228: --------------------------------- Description: Surefire confuses tests run with a data-provider with rerun tests so only one of the data-provided tests need to pass. Steps to reproduce: # Create a testNG test with a data provider that passes with some of the data and fails with others {code:title=TestNG example|language=java} @Test(dataProvider = "succeed") public void fail(boolean succeed) { if (!succeed) { Assert.fail("nope"); } } @DataProvider(name="succeed") public Object[][] arrayIndex() { return new Object[][]{ {true}, {false}}; } {code} # Configure surefire to rerun failed tests {code:title=pom.xml example|language=xml} <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cam.test</groupId> <artifactId>testng-retry</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.10</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <rerunFailingTestsCount>1</rerunFailingTestsCount> </configuration> </plugin> </plugins> </build> </project> {code} - *Expected results*: "Tests run: 2, Failures: 1..." The tests should not pass. - *Actual results*: "Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1" The rerun confuses test runs with different data for retry attempts. Just one of the data provider tests needs to succeed for the test to be deemed a success. {code}mvn test ... ------------------------------------------------------- T E S T S ------------------------------------------------------- Running TestRandomFail Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.267 sec <<< FAILURE! - in TestRandomFail fail(TestRandomFail) Time elapsed: 0.007 sec <<< FAILURE! java.lang.AssertionError: nope at TestRandomFail.fail(TestRandomFail.java:14) Results : Flaked tests: TestRandomFail.fail(TestRandomFail) Run 1: PASS Run 2: TestRandomFail.fail:14 nope Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.251 s [INFO] Finished at: 2016-02-10T07:39:21-07:00 [INFO] Final Memory: 9M/244M [INFO] ------------------------------------------------------------------------ {code} was: Surefire confuses tests run with a data-provider with rerun tests so only one of the data-provided tests need to pass. Steps to reproduce: # Create a testNG test with a data provider that passes with some of the data and fails with others {code:title=TestNG example|language=java} @Test(dataProvider = "succeed") public void fail(boolean succeed) { if (!succeed) { Assert.fail("nope"); } } @DataProvider(name="succeed") public Object[][] arrayIndex() { return new Object[][]{ {true}, {false}}; } {code} # Configure surefire to rerun failed tests {code:title=pom.xml example|language=xml} <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cam.test</groupId> <artifactId>testng-retry</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.9</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <rerunFailingTestsCount>1</rerunFailingTestsCount> </configuration> </plugin> </plugins> </build> </project> {code} - *Expected results*: "Tests run: 2, Failures: 1..." The tests should not pass. - *Actual results*: "Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1" The rerun confuses test runs with different data for retry attempts. Just one of the data provider tests needs to succeed for the test to be deemed a success. {code}mvn test ... ------------------------------------------------------- T E S T S ------------------------------------------------------- Running TestRandomFail Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.267 sec <<< FAILURE! - in TestRandomFail fail(TestRandomFail) Time elapsed: 0.007 sec <<< FAILURE! java.lang.AssertionError: nope at TestRandomFail.fail(TestRandomFail.java:14) Results : Flaked tests: TestRandomFail.fail(TestRandomFail) Run 1: PASS Run 2: TestRandomFail.fail:14 nope Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.251 s [INFO] Finished at: 2016-02-10T07:39:21-07:00 [INFO] Final Memory: 9M/244M [INFO] ------------------------------------------------------------------------ {code} > rerunFailingTestsCount + TestNG + @DataProvider = failed tests pass > ------------------------------------------------------------------- > > Key: SUREFIRE-1228 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1228 > Project: Maven Surefire > Issue Type: Bug > Components: TestNG support > Affects Versions: 2.19.1 > Reporter: Cam Morris > Attachments: TestRandomFail.java, testng-retry.iml > > > Surefire confuses tests run with a data-provider with rerun tests so only one > of the data-provided tests need to pass. > Steps to reproduce: > # Create a testNG test with a data provider that passes with some of the data > and fails with others > {code:title=TestNG example|language=java} > @Test(dataProvider = "succeed") > public void fail(boolean succeed) { > if (!succeed) { > Assert.fail("nope"); > } > } > @DataProvider(name="succeed") > public Object[][] arrayIndex() { > return new Object[][]{ {true}, {false}}; > } > {code} > # Configure surefire to rerun failed tests > {code:title=pom.xml example|language=xml} > <?xml version="1.0" encoding="UTF-8"?> > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > <modelVersion>4.0.0</modelVersion> > <groupId>cam.test</groupId> > <artifactId>testng-retry</artifactId> > <version>1.0-SNAPSHOT</version> > <dependencies> > <dependency> > <groupId>org.testng</groupId> > <artifactId>testng</artifactId> > <version>6.9.10</version> > <scope>test</scope> > </dependency> > </dependencies> > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-surefire-plugin</artifactId> > <version>2.19.1</version> > <configuration> > <rerunFailingTestsCount>1</rerunFailingTestsCount> > </configuration> > </plugin> > </plugins> > </build> > </project> > {code} > - *Expected results*: "Tests run: 2, Failures: 1..." The tests should not > pass. > - *Actual results*: "Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, > Flakes: 1" The rerun confuses test runs with different data for retry > attempts. Just one of the data provider tests needs to succeed for the test > to be deemed a success. > {code}mvn test > ... > ------------------------------------------------------- > T E S T S > ------------------------------------------------------- > Running TestRandomFail > Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.267 sec <<< > FAILURE! - in TestRandomFail > fail(TestRandomFail) Time elapsed: 0.007 sec <<< FAILURE! > java.lang.AssertionError: nope > at TestRandomFail.fail(TestRandomFail.java:14) > Results : > Flaked tests: > TestRandomFail.fail(TestRandomFail) > Run 1: PASS > Run 2: TestRandomFail.fail:14 nope > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1 > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESS > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 2.251 s > [INFO] Finished at: 2016-02-10T07:39:21-07:00 > [INFO] Final Memory: 9M/244M > [INFO] > ------------------------------------------------------------------------ > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)