2016-04-26 5 views
0

シンプルなクラスをテストするためにここにJUnitのテストケースがあります。基本的に、クラスには2つの数値の合計を返す 'sum'というメソッドが1つだけ含まれています。これが正しいかどうかをテストするには、次の方法を使用します。Assert.assertEquals(2, my_object.sum(1, 2));結果は、eclipseのタブの「Failure Trace」セクションに表示されます。メッセージには、junit.framework.AssertionFailedError: expected:<2> but was:<3>と表示されます。このメッセージを取得してString変数に入れることは可能ですか?JUnit assertEquals()メソッドの出力を取得して変数に入れる方法は?

+2

あなたが本当にし何をしようとしていますか? – sisyphus

+1

なぜそれをしたいですか? –

+0

JUnitのテストケースを宿題として使ってクラスを評価するWebシステムを構築する必要があるので、このメッセージを受けて最終的なユーザーに提示する必要があります。 –

答えて

1

Asserts that two objects are equal. If they are not, an AssertionError without a message is thrown. If expected and actual are null, they are considered equal.

あなたはあなたの状態が失敗したときAssertionErrorをキャッチする必要があります。

は、このコードを試してみてください。

@Test 
    public void myTest() throws Exception{ 
     String assertionError = null; 
     try { 
      Assert.assertEquals(2,3); 
     } 
     catch (AssertionError ae) { 
      assertionError = ae.toString(); 
     } 
     System.out.println(assertionError); 

    } 

OUTPUT:AssertionErrorを訪問Javaのドキュメントに関する詳細情報については

java.lang.AssertionError: expected:<2> but was:<3>

AssertionErrorAssert

+0

申し訳ありませんが、これのポイントは何ですか? JUnitテストのアイデアは**自動化**実行を可能にすることです。全体のフレームワークは、失敗したテストケースが... AssertionErrorsを投げるという考えに基づいています。すべてのテストを実行しているフレームワークがそれらをキャッチします。確かに、あなたは自分でそれをキャッチすることができますが、あなたがそれをしている場合...あなたは完全な9ヤードを行くことができ、完全にすべてのJunitテストを捨てることができます。あなたはちょうどそれを無価値なものにしたから**。 – GhostCat

+0

@Jägermeisterあなたは間違いなしです。 AssertionErrorをキャッチすることに意味はありません。 OPはこの特定の質問(彼の宿題について)を求めてきたので、私は答えました。 – Unknown

+0

私はその部分を得ました。私は、単に私が行方不明になっているより深い意味があるかどうか疑問に思っていました。のように:家事;教師は「合理的な」ことを求めるべきであると期待しています。生徒にフレームワークを完全に「壊れた」方法で使用するように依頼するのではなく、 – GhostCat

4

assertEqualsは、voidの方法である。結果を変数に入れることはできません。しかし、try/catchブロックで例外を得ることができます。

のJavaのdocのassertEqualsから
try{ 
    assertEquals("foo", "foo1"); //will fail 
} catch(AssertionError e){ 
    String message = e.getMessage(); 
    //do whatever you want with e 
} 
+0

私はそれを試したが動作しません。実際には、assertEqualsが失敗したときにこれはキャッチされません。次の行は、失敗したときには実行されません。 –

+1

私の悪い、それを固定!問題は 'AssertionError'が' Exception' bu 'Error'を拡張しないということです。ですから、@Unknownが示唆しているように 'AssertionError'をキャッチする方が良いでしょう。 –

関連する問題