]
Alex Holmansky commented on ARQ-1282:
-------------------------------------
Is there any plan to get this fixed? This makes data providers next to impossible to use
with Arquillian.
TestNG @DataProvider is fully invoked for each record
-----------------------------------------------------
Key: ARQ-1282
URL:
https://issues.jboss.org/browse/ARQ-1282
Project: Arquillian
Issue Type: Bug
Components: JBoss AS Containers
Affects Versions: 1.0.3.Final
Reporter: Karel Cemus
Assignee: Bartosz Majsak
Attachments: ArquillianDataProvider.java, FlightServiceTest.java
h2. Expected behavior
TestNG defines @DataProvider annotation to allow single method to perform multiple test
cases. Provider method annotated with @DataProvider returns an array of arrays, each
containing one test case. These parameters are given to the target method as input
parameters. By the definition, the total count of performed test by single method is equal
to number of test cases in related data provider.
h2. Actual behavior
Using TestNG under Arquillian framework makes this functionality buggy. Although the
client (maven, IDE, etc.) thinks, that the total number of invoked test is correct, it is
not. When we take a look into server's log, we can see that for each single test case
it invoked full set of all test cases. It means, that in the end the amount of performed
tests is equal to expected count squared. Such behaviour is not only slow but also in some
cases it doesn't work and it makes tests to fail.
h2. Example
{code:java}
@DataProvider
public Object[][] sumProvider() {
return new Object[][]{
new Object[]{ 0, 0, 0 },
new Object[]{ 1, 1, 2 },
new Object[]{ 1, 5, 6 },
new Object[]{ 5, 1, 6 }
};
}
{code}
h3. Expected output in server log
{quote}
Execution of sum: 0 + 0 = 0
Execution of sum: 1 + 1 = 2
Execution of sum: 1 + 5 = 6
Execution of sum: 5 + 1 = 6
{quote}
h3. Actual output
{quote}
Execution of sum: 0 + 0 = 0
Execution of sum: 1 + 1 = 2
Execution of sum: 1 + 5 = 6
Execution of sum: 5 + 1 = 6
Execution of sum: 0 + 0 = 0
Execution of sum: 1 + 1 = 2
Execution of sum: 1 + 5 = 6
Execution of sum: 5 + 1 = 6
Execution of sum: 0 + 0 = 0
Execution of sum: 1 + 1 = 2
Execution of sum: 1 + 5 = 6
Execution of sum: 5 + 1 = 6
Execution of sum: 0 + 0 = 0
Execution of sum: 1 + 1 = 2
Execution of sum: 1 + 5 = 6
Execution of sum: 5 + 1 = 6
{quote}