2017-11-20 3 views
0

私の目標は、自分のコードの100%単体テスト範囲を取得することです。それは私がユニットテストでそれをカバーすることができない、真Javaで非同期ロジックをカバーする方法

 public void myMethod() 
     { 
     //some logic 
      taskExecutor.execute(() -> { 
      //logic I can not cover 
      }); 
     // some other logic 
     } 

です:ので、私は私の方法でそうのような匿名クラスでのTaskExecutorを使用することが起こったのか?私が見るように、私は100%を得るために、この場合匿名のクラスを取り除くべきです。右?

+1

ロジックは共有状態を使用していますか、基本的にはステートレス機能ですか?後者の場合、匿名クラスを取り除いてロジック自体をテストすることができます。前者の場合、単体テストは、それをテストする正しい方法であるかどうかということです。 –

+0

はい、実際は私の場合は共有状態を使用しません。私は、目標が100%であることを覚えていれば、匿名のクラスはコードに入れるのが正しい選択ではないと思います。 – rastaman

+0

調査対象:同じスレッド実行者。これは、同じスレッドでコードを実行すると十分です – GhostCat

答えて

0

私の友人の1人が、executeメソッドをオーバーライドしてアプローチを行っています。これにより、ユニットテストのためにtaskExecutorが同期化されました。私はそれを私の場合のための道として見る。

taskExecutor = new ThreadPoolTaskExecutor() 
{ 
    @Override 
    public void execute(Runnable task) 
    { 
    task.run(); 
    } 
}; 
関連する問題