2013-05-13 9 views
6

私はテストレポートを生成するとき、私はJUnit assertEqualsを使用したカスタム例外メッセージ?

は「私のエラーメッセージ期待(初)は、第二(だっ取得、アサートは、次に、2つの数字

Assert.assertEquals("My error message", First , Second); 

を比較するために等しく使用しています) "

斜体で入力した部分はどのようにカスタマイズできますか?数字の形式は?

+0

私はあなたがJavaを使用していると仮定しました。 Scalaの場合は、それに応じてタグを調整してください。 –

答えて

5

メッセージは、Assertクラスでハードコードされています。カスタムメッセージを生成するために、独自のコードを記述する必要があります。

if (!first.equals(second)) { 
    throw new AssertionFailedError(
     String.format("bespoke message here", first, second)); 
} 

(注:上記のラフな例です - あなたはなどヌルをチェックしたいと思うことはありますかを確認するためにAssert.javaのコードを参照してください。完了)。

7

あなたはこのようなものを使用することができます:私はAssertクラスでこの

 static String format(String message, Object expected, Object actual) { 
    String formatted= ""; 
    if (message != null && !message.equals("")) 
     formatted= message + " "; 
    String expectedString= String.valueOf(expected); 
    String actualString= String.valueOf(actual); 
    if (expectedString.equals(actualString)) 
     return formatted + "expected: " 
       + formatClassAndValue(expected, expectedString) 
       + " but was: " + formatClassAndValue(actual, actualString); 
    else 
     return formatted + "expected:<" + expectedString + "> but was:<" 
       + actualString + ">"; 
} 

を見つけたあなたの答えのおかげで、私はJUnitのAssertクラスを変更することはできません推測

int a=1, b=2; 
String str = "Failure: I was expecting %d to be equal to %d"; 
assertTrue(String.format(str, a, b), a == b); 
+1

これは状況を改善しません。 OPはエラーメッセージを追加する方法をすでに知っていますが、目標はイタリック体のパーツの表現を変更することです。あなたのソリューションにはまだ文言が残ります。 –

+0

本当ですか? Eclipseで(2,1)を実行すると、「失敗:2が1と等しいと予想していましたが、「期待された...でした」という部分は得られませんでした。 – Salem

+1

@SalemこれはassertTrueを使用しているためですassertEquals – kryger

0

を、しかし、同じ名前のプロジェクトで新しいクラスを作成することはできますが、フォーマットを変更するだけです。そうですか?それとも、クラスのフォーマットを変更するだけで、スローされる例外に影響しますか?

+2

はい、このアプローチをとることができます。これは本質的には私の答えで示唆していることです - メッセージを変更する必要がある場合は、テストを行うための独自のコードを記述する必要があります。 –

関連する問題