使用junit进行单元测试的时候,并不能对多线程的操作进行测试。一般情况下是使用main方法来进行测试。但如果项目需要加载大量的配置的情况下,测试类写起来很复杂,需要去写加载各种配置文件的代码。不过可以使用第三方提供的依赖来进行 单元测试,通junit测试一样,只要使用@Test注解即可。
测试代码
package merchantPlatform.service.daoTest;
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestRunnable;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.zto.Application;
import com.zto.merchantPlatform.redis.impl.Redis123;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("dev")
public class MuiltThreadTest {
@Autowired
private Redis123 redis;
@Test
public void setTest() {
TestRunnable[] trs = new TestRunnable[500];
for (int i = 0; i < trs.length; i++) {
trs[i] = new MuiltThread(redis);
}
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
try {
mttr.runTestRunnables();
} catch (Throwable e) {
e.printStackTrace();
}
}
public Redis123 getRedis() {
return redis;
}
public void setRedis(Redis123 redis) {
this.redis = redis;
}
}
class MuiltThread extends TestRunnable{
private Redis123 redis;
public MuiltThread() {
super();
}
public MuiltThread(Redis123 redis) {
super();
this.redis = redis;
}
public Redis123 getRedis() {
return redis;
}
public void setRedis(Redis123 redis) {
this.redis = redis;
}
@Override
public void runTest() throws Throwable {
for(int j=0;j<100;j++){
redis.setData(j+"", "ww");
System.out.println(redis.getData(j+""));
}
}
}
ConTest 进行多线程单元测试