[
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)