背景
junit 是无法进行并发测试,但是又有需要并发测试的场景怎么办呢?此时可以借助一个插件(Groboutils Core)来完成这种功能。maven 仓库地址:点我直达
实现
第一步:在项目的 pom.xml 中加入依赖
<!– https://mvnrepository.com/artifact/net.sourceforge.groboutils/groboutils-core –>
<dependency>
<groupId>net.sourceforge.groboutils</groupId>
<artifactId>groboutils-core</artifactId>
<version>5</version>
<scope>test</scope>
</dependency>
第二步:在单测中进行代码编写
@Test
public void testConcurrentInitOrBind() {
// mock 一个返回
doReturn(Lists.newArrayList(userMemberCard)).when(operateCardDao)
.queryCardByRegisterMobileAndTenantId(anyString(), anyLong());
TestRunnable runner = new TestRunnable() {
// 在 runTest 方法中填写自己的测试方法
@Override
public void runTest() throws Throwable {
InitCardResVo resVoFirst = operateCardService.initOrBindCard(requestVo);
System.out.println(“result resVoFirst is:” + resVoFirst.toString());
}
};
// 一个数组,代表并发个数。此处并发 5 个
TestRunnable[] trs = new TestRunnable[5];
for (int i = 0; i < 5; i++) {
trs[i] = runner;
}
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
try {
mttr.runTestRunnables();
} catch (Throwable ex) {
ex.printStackTrace();
}
}