2011-08-17 80 views
0

下面的代码片段位于我的JUnit测试用例类中。我使用三个线程来测试一个名为SharedResources的类; getGuy只是其中之一。我的问题是在启动线程后,只有第一个读取sharedResource,并且只有一次。JUnit测试用例中的线程测试SharedResource类

Thread getGuy = new Thread(new Runnable() { 
     public void run() { 
      for(int i=0; i < 5; i++) { 
       try { 
        Thread.sleep(500); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       System.out.println("I consume",resource.get()); 
      }//for 
     } 
    }); 

感谢您的任何帮助。

+1

需要更多的上下文,更多的代码。 – Thilo

+0

+1更多的上下文。你期待它做什么?你试图运行的测试场景是什么(即其他两个线程做了什么以及你期望的结果是什么)?其他线程对资源做了什么?你的代码中的任何睡眠都会造成不可预知的测试......至少,不可预测的交错使得测试很难写 – Toby

回答

0

这是一个基本的生产者 - 消费者设计。而不是创建生产者和消费者类,我只需创建sharedResource类。然后在JUnit测试用例中,我创建了生产者和消费者线程。 getGuy是一个消费者线程。

谢谢