简介
- Junit本身是不支持是多线程测试的,因为Junit的底层实现上,是用System.exit退出用例执行的。JVM终止了在测试线程启动的其他线程自然也无法执行。
- GroboUtils旨在扩展Java测试的可能性。它包含许多子项目,通过Java进行不同方面的测试。GroboUtils中包含的流行工具包括多线程测试、层次单元测试和代码覆盖工具。
这个工具集是在MIT许可下发布的。 - 官网地址:groboutils
使用方法
1. 导入POM依赖
<dependency>
<groupId>net.sourceforge.groboutils</groupId>
<artifactId>groboutils-core</artifactId>
<version>5</version>
<scope>test</scope>
</dependency>
2. 编写测试用例
@SpringBootTest
class OrderServiceTest {
@Autowired
OrderMainStateService orderMainStateService;
@Test
public void sendOrderMainEvent() throws Throwable {
int threadNum = 100;
TestRunnable[] test = new TestRunnable[threadNum];
long start = System.currentTimeMillis();
for (int i = 0; i < test.length; i++) {
test[i] = new TestRunnable() {
@Override
public void runTest() throws Throwable {
orderMainStateService.execute(MainEvents.CANCEL, "ordercode");
}
};
}
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(test);
mttr.runTestRunnables();
long used = System.currentTimeMillis() - start;
System.out.printf("%s 调用花费 %s milli-seconds.\n", threadNum, used);
}
}