2016-12-09 9 views
1

ユニットテストでErrorCollectorを使用して、アサーションの失敗がテストを中止しないようにしようとしています。代わりに、テストの最後に失敗の数を確認し、その数がゼロより大きい場合にのみテストを失敗させたいと思います。JUnitのErrorCollectorを使用して、発生した障害の数を確認するにはどうすればよいですか?

だから私の基本的なテストは、次のようになります。

@RunWith(AndroidJUnit4.class) 
public class SampleAndroidTest { 

    @Rule 
    public ErrorCollector errors = new ErrorCollector(); 

    @Test 
    public void testErrorCollector() throws Exception { 
     try { 
      assertEquals(1, 1); // should pass 
     } catch (Throwable t) { 
      errors.addError(t); 
     } 
     try { 
      assertEquals(1, 2); // should fail 
     } catch (Throwable t) { 
      errors.addError(t); 
     } 
     try { 
      assertEquals(1, 3); // should fail 
     } catch (Throwable t) { 
      errors.addError(t); 
     } 
    } 
} 

しかし、私はerrorsオブジェクトに何をすべきかわかりません。 Javadocs for ErrorCollectorは、失敗回数などを取得する方法を示していません。現在の方法では、最後の失敗のみが表示されます。

を使ってオブジェクトをStringに変換しようとしましたが、メモリアドレスだけが与えられ、他のスタックトレースはありません。私は、他のスタックトレースを得る方法があること、そしてその解決策は簡単だと確信していますが、私の人生のためにそれを理解することはできません。

+0

あなたのテストが本当にこのようなものなら、「理論」テストまたは「パラメータ化」テストの使用を検討する必要があります。あるいは、[assertJ soft assertions](http://joel-costigliola.github.io/assertj/assertj-core-features-highlight.html#soft-assertions)をチェックしてください。 –

答えて

0

さらに調査した結果、ErrorCollectorは実際にテストの最後にすべての失敗を表示することがわかった。最後の失敗が表示されたのは、Android Studioの設計方法によるものです。他のスタックトレースを取得するには、Logcat出力を直接表示する必要があります。

関連する問題