reportportal/agent-java-junit

Suite run is having waiving issue

DuskoV opened this issue · 2 comments

If I try to run the test with Suite.class runner, I get this error trace:

java.lang.IllegalStateException: Found multiple candidates for method describeChild(class org.junit.runners.BlockJUnit4ClassRunner) on class org.junit.runners.Suite : [protected org.junit.runner.Description org.junit.runners.Suite.describeChild(java.lang.Object),protected org.junit.runner.Description org.junit.runners.Suite.describeChild(org.junit.runner.Runner),protected org.junit.runner.Description org.junit.runners.ParentRunner.describeChild(java.lang.Object)] at org.apache.commons.lang3.reflect.MethodUtils.getMatchingMethod(MethodUtils.java:784) at org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(MethodUtils.java:217) at org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(MethodUtils.java:184) at com.nordstrom.automation.junit.LifecycleHooks.invoke(LifecycleHooks.java:412) at com.nordstrom.automation.junit.AtomicTest.<init>(AtomicTest.java:34) at com.nordstrom.automation.junit.RunAnnouncer.newAtomicTest(RunAnnouncer.java:119) at com.nordstrom.automation.junit.RunChild.intercept(RunChild.java:49) at org.junit.runners.Suite.runChild(Suite.java) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run$original$RnPkkO4k(ParentRunner.java:363) at org.junit.runners.ParentRunner.run$original$RnPkkO4k$accessor$9xjv0dUt(ParentRunner.java) at org.junit.runners.ParentRunner$auxiliary$VvzPshSo.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:472) at com.nordstrom.automation.junit.Run.intercept(Run.java:58) at org.junit.runners.ParentRunner.run(ParentRunner.java) at org.junit.runners.Suite.run$accessor$EXX90XT2(Suite.java) at org.junit.runners.Suite$auxiliary$Q3fNu3Q4.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:472) at com.nordstrom.automation.junit.Run.intercept(Run.java:58) at org.junit.runners.Suite.run(Suite.java) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.junit.runner.JUnitCore.run(JUnitCore.java:105) at org.junit.runner.JUnitCore.run(JUnitCore.java:94)

- Error indicates polymorphism waving issue.

Sample Suite class:

@RunWith(Suite.class)


@Suite.SuiteClasses({

TestClass_01.class,
TestClass_02.class

})


public class Batch_TestingOneAndTwo {


}


Using version:

com.epam.reportportal

agent-java-junit

5.0.0



Testing single class, like TestClass_01.class is working awesome! Very smooth, compared to version 4 branch! (well done!)

However, version 4 branch doesn't suffer from this issue. Version 4 sends data, but doesn't stop any testing properly.

@DuskoV More likely you are using old, incompatible version of JUnit-Foundation which is left from V4, since we have tests which test specifically Suites:
https://github.com/reportportal/agent-java-junit/blob/develop/src/test/java/com/epam/reportportal/junit/features/suites/SimpleSuiteClass.java

And even Suite of Suites:
https://github.com/reportportal/agent-java-junit/blob/develop/src/test/java/com/epam/reportportal/junit/features/suites/SuiteOfSuitesClass.java

They won't pass if it would fail on startup.

So please update JUnit-Foundation, or even better, use JUnit-Foundation from transitive dependency.

Another issue, which might be here is an old version of JUnit 4. The recommendation is the same, please ensure that you use it from transitive dependency.

Abandoned