web-dev-qa-db-ja.com

TestNGでのassertEquals()とassertTrue()の実際の違いは何ですか?

以下のコードのスニペットのように、どちらも同じことを実行できるため、これらの両方の方法について混乱しています。

assertEquals()を使用する

String a = "Hello";
String b = "Hello";

assertEquals(a, b);

assertTrue()を使用する

assertTrue(a.equals(b));

これら2つの方法の実際の違いを誰かに教えてもらえますか?

16
Jainish Kapadia

assertEqualsは、ユニットテストフレームワークに実際に必要な情報を提供するため、より優れています。これにより、テストが失敗したときに、より適切なエラー情報を提供できます。

あなたが持っていたとしましょう

String a = "Hello";
String b = "Hi";

次に、テストの失敗は次のようになります。

// From assertEquals(a, b)
Error: Expected "Hi"; was "Hello"

// From assertTrue:
Error: Expected true; was false

これらのうち、値がおそらくかなり複雑な計算の結果であることを念頭に置いて、より多くの情報を提供すると思いますか?

(testngがインストールされていないため、これらはエラーメッセージで構成されていますが、ユニットテストフレームワークが提供するもののkindです。)

35
Jon Skeet