ホームページ  >  記事  >  Java  >  JUnit のメソッドassertNotEqualsを提供しないのはなぜでしょうか?

JUnit のメソッドassertNotEqualsを提供しないのはなぜでしょうか?

黄舟
黄舟オリジナル
2016-12-29 09:14:011824ブラウズ

1. 新しいassertThat()スタイルのアサーションを提案します。これにより、さまざまな否定を簡単に記述でき、アサーションが失敗した場合に期待する内容と結果の説明が自動的に生成されます。最も読みやすいものを選択してください (そして、この厳密な構文が機能するようにします)。次のインポートが必要です。JUnit 4.11 には、assertNotEquals:

3 があります。アサーション API は、提供するオブジェクトをテストするのに適しており、もちろん CodeGo.net も同様です。次のように書くのはそれほど長くはありません:

is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));

この引数の yield 部分を使用すると、残念ながら次のようになります:

mport static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

That's ofもちろん、assertNotEqual を自分で展開する方がよいでしょう。幸いなことに、これはおそらく JUnit の一部になるでしょう: JUnit issue 22

4。これは、追加する API の数が少なくても、省略された分のヘッドルームが大きくなるという適切なケースです。その理由は、おそらくマルチプレイヤー呼び出しが少なすぎるためですが、assertFalse さえ存在しない場合でも呼び出しが発生するためです。回避策があることは認めますが、難しいものではないので、最終的にはポジティブな期待値を追加することになるかもしれません。私はこのパーティーに非常に遅れていますが、次の形式がほとんどの場合に機能することがわかりました。等しい場合

assertFalse(foo.equals(bar));

6. AssertFalse の代わりに diff 失敗がテスト レポートに表示されるため、assertNotEquals( ) は組み込みのコマンドです。最初に本格的なオブジェクトに変換する必要はありません。詳細な例:
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));

static void assertTrue(java.lang.String message, boolean condition)

8。JUnit がassertNotEquals() を提供しない理由は、JUnit が常に好む理由です。それは、assertStringMatchesTheRegex(regex, str) vs.assertStringDoesntMatchTheRegex(regex, str)assertStringBeginsWith(prefix, str) vs.assertStringDoesntBeginWith(prefix, str) つまり、引数に必要な内容に対して特定の種類のロジックを提供することに終わりはありません。 読みやすさと健全性を高めるために、equalTo(...)、is(...)、not(...)、regex(...) などのプリミティブをテストし、これらを連携させた方がよいでしょう。

上記は、JUnit メソッドのassertNotEquals が提供されていない理由ですか?コンテンツ、その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。