[
https://issues.apache.org/jira/browse/SUREFIRE-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
M.P. Korstanje updated SUREFIRE-1691:
-------------------------------------
Description:
This is a follow up on:
- https://issues.apache.org/jira/browse/SUREFIRE-1156
- [https://github.com/cucumber/cucumber-jvm/issues/865]
The latest reproducer can be found here:
-
[https://github.com/mpkorstanje/surefire-test/tree/07d0ee98ea424b38a3c548981a875dde1ef4f2c2]
In short Cucumber has a hierarchy of tests that looks at follows:
{noformat}
Class annotated with @RunWith(Cucumber.class)
|- Feature File 1
| |- Scenario 1a
| |- Scenario 1b
|- Feature File 2
| |- Scenario 2a
| |- Scenario 2b
{noformat}
Surefire tries to group output in tests sets, either per class or per test
suite. As Cucumber currently only emits test started/finished events for
Scenarios sure fire can not group scenarios into a test set. They are instead
group with the previous test set. However even after adding test
started/finished events for features results in a single test set.
I believe there is an error in {{NonConcurrentRunListener.describesNewTestSet}}.
{code:java}
private boolean describesNewTestSet( Description description )
{
if ( currentTestSetDescription != null )
{
if ( null != description.getTestClass() )
{
return !description.getTestClass().equals(
currentTestSetDescription.getTestClass() );
}
else if ( description.isSuite() )
{
return description.getChildren().equals(
currentTestSetDescription.getChildren() );
}
return false;
}
return true;
}
{code}
The value of {{description.getChildren().equals(
currentTestSetDescription.getChildren() );}} should be negated so so different
test suits are properly recognized as test sets.
Fixing this locally works and can be reproduced by:
1. Negating the line and building sure fire locally
2. Building [https://github.com/cucumber/cucumber-jvm/pull/1765] with `mvn
clean install -DskipTests`
3. Running `mvn clean test -Pjunit47` on
[https://github.com/mpkorstanje/surefire-test]
It does however does result in another unwanted result: A feature file with two
scenarios is now reported as having 3 results. One for each scenario and one
for the feature.
{noformat}
-------------------------------------------------------------------------------
Test set: Some Feature 1
-------------------------------------------------------------------------------
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.112 s - in
Some_Feature_1
{noformat}
was:
This is a follow up on:
- https://issues.apache.org/jira/browse/SUREFIRE-1156
- [https://github.com/cucumber/cucumber-jvm/issues/865]
The latest reproducer can be found here:
-
[https://github.com/mpkorstanje/surefire-test/tree/07d0ee98ea424b38a3c548981a875dde1ef4f2c2]
In short Cucumber has a hierarchy of tests that looks at follows:
{noformat}
Class annotated with @RunWith(Cucumber.class)
|- Feature File 1
| |- Scenario 1a
| |- Scenario 1b
|- Feature File 2
| |- Scenario 2a
| |- Scenario 2b
{noformat}
Surefire tries to group output in tests sets, either per class or per test
suite. As Cucumber currently only emits test started/finished events for
Scenarios sure fire can not group scenarios into a test set. They are instead
group with the previous test set. However even after adding test
started/finished events for features results in a single test set.
I believe there is an error in {{NonConcurrentRunListener.describesNewTestSet}}.
{code:java}
private boolean describesNewTestSet( Description description )
{
if ( currentTestSetDescription != null )
{
if ( null != description.getTestClass() )
{
return !description.getTestClass().equals(
currentTestSetDescription.getTestClass() );
}
else if ( description.isSuite() )
{
return description.getChildren().equals(
currentTestSetDescription.getChildren() );
}
return false;
}
return true;
}
{code}
The value of {{description.getChildren().equals(
currentTestSetDescription.getChildren() );}} should be negated so so different
test sets are properly recognized.
Fixing this locally works and can be reproduced by:
1. Negating the line and building sure fire locally
2. Building [https://github.com/cucumber/cucumber-jvm/pull/1765] with `mvn
clean install -DskipTests`
3. Running `mvn clean test -Pjunit47` on
[https://github.com/mpkorstanje/surefire-test]
It does however does result in another unwanted result: A feature file with two
scenarios is now reported as having 3 results. One for each scenario and one
for the feature.
{noformat}
-------------------------------------------------------------------------------
Test set: Some Feature 1
-------------------------------------------------------------------------------
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.112 s - in
Some_Feature_1
{noformat}
> surefire-junit47 reports results against incorrect test
> -------------------------------------------------------
>
> Key: SUREFIRE-1691
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1691
> Project: Maven Surefire
> Issue Type: Bug
> Components: Junit 4.x support
> Affects Versions: 3.0.0-M3
> Reporter: M.P. Korstanje
> Priority: Major
>
> This is a follow up on:
> - https://issues.apache.org/jira/browse/SUREFIRE-1156
> - [https://github.com/cucumber/cucumber-jvm/issues/865]
> The latest reproducer can be found here:
> -
> [https://github.com/mpkorstanje/surefire-test/tree/07d0ee98ea424b38a3c548981a875dde1ef4f2c2]
> In short Cucumber has a hierarchy of tests that looks at follows:
> {noformat}
> Class annotated with @RunWith(Cucumber.class)
> |- Feature File 1
> | |- Scenario 1a
> | |- Scenario 1b
> |- Feature File 2
> | |- Scenario 2a
> | |- Scenario 2b
> {noformat}
> Surefire tries to group output in tests sets, either per class or per test
> suite. As Cucumber currently only emits test started/finished events for
> Scenarios sure fire can not group scenarios into a test set. They are instead
> group with the previous test set. However even after adding test
> started/finished events for features results in a single test set.
> I believe there is an error in
> {{NonConcurrentRunListener.describesNewTestSet}}.
> {code:java}
> private boolean describesNewTestSet( Description description )
> {
> if ( currentTestSetDescription != null )
> {
> if ( null != description.getTestClass() )
> {
> return !description.getTestClass().equals(
> currentTestSetDescription.getTestClass() );
> }
> else if ( description.isSuite() )
> {
> return description.getChildren().equals(
> currentTestSetDescription.getChildren() );
> }
> return false;
> }
> return true;
> }
> {code}
> The value of {{description.getChildren().equals(
> currentTestSetDescription.getChildren() );}} should be negated so so
> different test suits are properly recognized as test sets.
> Fixing this locally works and can be reproduced by:
> 1. Negating the line and building sure fire locally
> 2. Building [https://github.com/cucumber/cucumber-jvm/pull/1765] with `mvn
> clean install -DskipTests`
> 3. Running `mvn clean test -Pjunit47` on
> [https://github.com/mpkorstanje/surefire-test]
> It does however does result in another unwanted result: A feature file with
> two scenarios is now reported as having 3 results. One for each scenario and
> one for the feature.
> {noformat}
> -------------------------------------------------------------------------------
> Test set: Some Feature 1
> -------------------------------------------------------------------------------
> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.112 s - in
> Some_Feature_1
> {noformat}
--
This message was sent by Atlassian Jira
(v8.3.2#803003)