2011-08-17 9 views
0

以下のコードスニペットはJUnitテストケースクラスにあります。 SharedResourcesというクラスをテストするために3つのスレッドを使用しています。 getGuyはその1つです。私の問題は、スレッドを開始した後、最初のものだけがsharedResourceを読み込み、それは一度だけです。SharedResourceクラスをテストするJUnitテストケース内のスレッド

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つの文脈。それは何を期待していますか?実行しようとしているテストシナリオは何ですか?(つまり、他の2つのスレッドは何を行いますか、結果は何になると思いますか?)他のスレッドはリソースで何をしますか?あなたのコードの中のどんな睡眠も予測不能なテストになるでしょう...少なくとも、予測できないインターリーブはテストを書くのを難しくします – Toby

答えて

0

これは基本的なプロデューサ - コンシューマデザインです。プロデューサクラスとコンシューマクラスを作成する代わりに、単にsharedResourceクラスを作成します。次に、JUnitテストケースでは、プロデューサとコンシューマスレッドを作成します。 getGuyはコンシューマスレッドです。

ありがとう

関連する問題