在我设置 reuseForks = true 的项目中,我必须将forkCount增加到测试类的数量。否则,它会抛出非法的例外。 此外,如果我设置 reuseForks = false ,那么它也可以正常工作。
目前我有以下配置,因为测试类的数量少于10个。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<reuseForks>true</reuseForks>
<forkCount>10</forkCount>
</configuration>
</plugin>
如何保持 reuseFork = true 和 forkCount = 1 。
编辑:在reuseFork = true和forkCount = 1
上的StackTrace checkForReturnEventsPresent on checkForReturnEventsPresent(com.eras.senders.OMSReturnEventDataSenderTest)(com.eras.senders.OMSReturnEventDataSenderTest) Time elapsed: 0.014 sec <<< FAILURE!
java.lang.IllegalArgumentException: null
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:115)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:212)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:108)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:111)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
答案 0 :(得分:3)
在我的项目中,当我设置reuseForks = true时,我必须将forkCount增加到测试类的数量。否则,它会抛出非法的例外。
从堆栈跟踪中,代码中出现的某些内容导致抛出异常,但仅在重用forks时才会抛出异常。这意味着不同的测试在某种程度上不会彼此隔离,因此在同一测试过程中一个接一个地运行违反了一些假设。例如,也许一个测试初始化一些全局状态,如单例,然后该全局状态对于该过程中的下一次测试运行不正确。
此外,如果我设置reuseForks = false,那么它也可以正常工作。
通过将reuseForks
设置为false
,可以绕过与此类变更全局状态相关的任何问题。在测试运行结束时,该过程将被拆除,并且下一次测试运行将启动具有新状态的新进程。
此时,前进的路径高度依赖于代码库的细节以及如何实现其测试。我看到两个选项:
reuseForks
设置为false
即可。在许多情况下,额外的进程拆卸和启动不会对整个测试运行产生明显的性能影响。