一 利用工具包:
引入者两个依赖:
就可以进行测试了,看测试代码:
package com.cxy.springs;
import com.cxy.springs.entity.TUser;
import com.cxy.springs.service.TUserService;
import org.databene.contiperf.PerfTest;
import org.databene.contiperf.junit.ContiPerfRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringsApplicationTests {
@Autowired
public TUserService userService;
@Test
public void contextLoads() {
}
//引入 ContiPerf 进行性能测试
@Rule
public ContiPerfRule contiPerfRule = new ContiPerfRule();
@Test
//10个线程 执行10次
@PerfTest(invocations = ,threads = )
public void test() {
TUser load = userService.load();
System.out.println(load.getPhone());
}
}
结果:
不知道为什么我的图片挂了
第二种方式:
利用concurrent包下列进行测试,不过他们没有具体的相应时间:
package com.cxy.springs;
import com.cxy.springs.entity.TUser;
import com.cxy.springs.service.TUserService;
import org.databene.contiperf.PerfTest;
import org.databene.contiperf.junit.ContiPerfRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringsApplicationTests {
@Autowired
public TUserService userService;
@Test
public void contextLoads() {
}
//引入 ContiPerf 进行性能测试
@Rule
public ContiPerfRule contiPerfRule = new ContiPerfRule();
@Test
//10个线程 执行10次
@PerfTest(invocations = ,threads = )
public void test() {
TUser load = userService.load();
System.out.println(load.getPhone());
}
@Test
public void test2()throws Exception{
ExecutorService executorService = Executors.newCachedThreadPool();
final Semaphore semaphore = new Semaphore();
final CountDownLatch countDownLatch = new CountDownLatch();
long l = System.currentTimeMillis();
for (int i = ; i < ; i++) {
final int count = i;
executorService.execute(() -> {
try {
semaphore.acquire();
TUser load = userService.load();
System.out.println(load.getPhone());
semaphore.release();
} catch (Exception e) {
// log.error("exception" , e);
}
countDownLatch.countDown();
});
}
countDownLatch.await();
long a = System.currentTimeMillis();
System.out.println(a-l);
executorService.shutdown();
//log.info("size:{}" , map.size());
}
}
这个开始时候给了5000个,直接把我数据库搞炸了,
后来改了,也还是可以测试的,如果需要使用这个那么需要整合线程池了,不然那么多的连接夯在那里会一直不走
手机扫一扫
移动阅读更方便
你可能感兴趣的文章