Cam Morris created SUREFIRE-1228:
------------------------------------

             Summary: 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


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*: The different runs using the provider data are confused for 
retry attempts.  Just one of the data needs to succeed for the tests to be 
assumed 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)

Reply via email to