在Java 6上使用TestNG,这是我想在Maven项目中做的事情:
testAbc
DataProvider
)
testAbc
完成testXyz
(testAbc
)的测试
醇>
我以为我已经正确配置了它,但我没有。
目前我已将其配置为:
@Test ( singleThreaded = false )
public class AutomatedTest {
@Test (
alwaysRun = true,
dataProviderClass = UseCaseProvider.class,
dataProvider = "getUseCasesNoDependencies",
skipFailedInvocations = false,
threadPoolSize = 25
)
public void testAbc(UseCase useCase) {
executeUseCase(useCase);
}
@Test (
dependsOnMethods = {"testAbc"},
dataProviderClass = UseCaseProvider.class,
dataProvider = "getUseCasesDependencies",
singleThreaded = true
)
public void testXyz(UseCase useCase) {
executeUseCase(useCase);
}
}
testAbc
提供的@DataProvider
中的所有测试需要很长时间才能运行,但同时可以运行多达25个(其中有好几百个)。 testXyz
中的所有内容都不能并行运行,因为不仅所有情况都依赖于testAbc
,而且处理对这样的线程池不友好。
My Maven配置设置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<parallel>methods</parallel>
<threadCount>25</threadCount>
</configuration>
</plugin>
</plugins>
</build>
当我运行mvn -U test
时,我看不到我的测试实际并行运行。
救命啊!
$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.6.0_35
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.7.5" arch: "x86_64" Family: "mac"
答案 0 :(得分:3)
添加threadPoolSize
@Test ( singleThreaded = false, threadPoolSize = 5 )
public class AutomatedTest {
...
threadPoolSize
属性允许您指定应为此次执行分配多少个线程。
修改
注意到你错过了invocationCount
。请注意,如果未指定threadPoolSize
,则会忽略invocationCount
。
所以请尽量离开@Test课程并更新testAbc
@Test (
alwaysRun = true,
dataProviderClass = UseCaseProvider.class,
dataProvider = "getUseCasesNoDependencies",
skipFailedInvocations = false,
threadPoolSize = 25,
invocationCount = 25
)
public void testAbc(UseCase useCase) {
executeUseCase(useCase);
}