Running JUnit 4 tests in parallel with the FailSafe and SureFire plugins

We have a profile created in maven to run the Selenium junit4 type tests, and below is a fragment of it without an execution tag.

<profile> <id>selenium-tests</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.11</version> <dependencies> <!-- Force using the latest JUnit 47 provider --> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>2.11</version> </dependency> </dependencies> <configuration> <parallel>classes</parallel> <threadCount>5</threadCount> <forkMode>pertest</forkMode> <useManifestOnlyJar>false</useManifestOnlyJar> <redirectTestOutputToFile>true</redirectTestOutputToFile> <skip>false</skip> <includes> <include>**/regtests/*.java</include> </includes> </configuration> </plugin> </plugins> </build> </profile> 

And my TestClass looks like this.

 @RunWith(HTMLSourceDumperJUnit4Runner.class) //Our own Runner public class MyTestClass extends Assert { private int x = 1; private int y = 1; @Test public void testAddition() { int z = x + y; assertEquals(2, z); } } 

When I run this test class through a fail-safe plugin 2.11 with a parallel configuration, it fails with the following error.

  java.lang.Exception: No runnable methods
     at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods (BlockJUnit4ClassRunner.java:171)
     at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors (BlockJUnit4ClassRunner.java:115)
     at org.junit.runners.ParentRunner.validate (ParentRunner.java:269)
     at org.junit.runners.ParentRunner. (ParentRunner.java:66)
     at org.junit.runners.BlockJUnit4ClassRunner. (BlockJUnit4ClassRunner.java:59)
     at org.junit.internal.builders.JUnit4Builder.runnerForClass (JUnit4Builder.java:13)
     at org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java:57)
     at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass (AllDefaultPossibilitiesBuilder.java:29)
     at org.junit.runner.Computer.getRunner (Computer.java:38)
     at org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getRunner (ConfigurableParallelComputer.java:142)
     at org.junit.runner.Computer $ 1.runnerForClass (Computer.java:29)
     at org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java:57)
     at org.junit.runners.model.RunnerBuilder.runners (RunnerBuilder.java:93)
     at org.junit.runners.model.RunnerBuilder.runners (RunnerBuilder.java:84)
     at org.junit.runners.Suite. (Suite.java:79)
     at org.junit.runner.Computer.getSuite (Computer.java:26)
     at org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getSuite (ConfigurableParallelComputer.java:134)
     at org.junit.runner.Request.classes (Request.java:69)
     at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute (JUnitCoreWrapper.java:53)
     at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke (JUnitCoreProvider.java:140)
     at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke (Method.java∗97)
     at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray (ReflectionUtils.java:188)
     at org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke (ProviderFactory.java:166)
     at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider (ProviderFactory.java:86)
     at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess (ForkedBooter.java:101)
     at org.apache.maven.surefire.booter.ForkedBooter.main (ForkedBooter.java:74)

Is there something that I am missing here. If I refuse any information for this message, send a message.

+4
source share
2 answers

There seems to be a bug in surefire 2.11. He does not like to work with

 <useManifestOnlyJar>false</useManifestOnlyJar> 

I filed an error. http://jira.codehaus.org/browse/SUREFIRE-819

+2
source

According to the maven docs in the plugin, in particular the <includes> . Test class name templates: **/IT*.java , **/*IT.java and **/*ITCase.java . Therefore, you will want to change the class name to MyIT or MyITCase or something like that.

http://maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html#includes

+4
source

Source: https://habr.com/ru/post/1388541/


All Articles