[关闭]
@Cesar 2015-11-30T07:26:29.000000Z 字数 570 阅读 1608

Junit不适合进行多线程测试

Java 学习

  1. package cesar.test1126;
  2. import junit.framework.TestCase;
  3. public class ThreadTest extends TestCase{
  4. public void test(){
  5. Test1126 test1126 = new Test1126();
  6. test1126.start();
  7. System.out.println("end");
  8. }
  9. }
  10. class Test1126 extends Thread{
  11. @Override
  12. public void run() {
  13. try {
  14. Thread.sleep(1000*1);
  15. System.out.println(123);
  16. } catch (InterruptedException e) {
  17. e.printStackTrace();
  18. }
  19. System.out.println(123);
  20. }
  21. }

当你运行该实例的时候,只会看到输出了"end"而没有123的输出。因为线程还在激活状态的时候,Junit已经执行完成。所以你的线程执行结束的时候,你的测试不能反映出它的执行结果。这个问题是因为Junit的TestRunner中,它没有被设计成搜寻Runnable实例并且等待这些线程发出报告,它只是执行启动了线程然后就忽略了它们。所以Junit几乎不可以用来进行多线程的测试。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注