NUnitのCollectionAssertと平行なjUnitはありますか?jAnitでのコレクションの取得?
答えて
のJUnit(および他のテストフレームワーク)とうまく統合し、一致ルールの豊富なセットを提供Hamcrestの使用を示唆(心配しないで、それが出荷されていますJUnitを用いた、複雑な自己記述を生成するために余分な.jar
は必要)のコレクションで動作するものも含めてアサートません:
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.*;
import static org.hamcrest.CoreMatchers.*;
List<String> l = Arrays.asList("foo", "bar");
assertThat(l, hasItems("foo", "bar"));
assertThat(l, not(hasItem((String) null)));
assertThat(l, not(hasItems("bar", "quux")));
// check if two objects are equal with assertThat()
// the following three lines of code check the same thing.
// the first one is the "traditional" approach,
// the second one is the succinct version and the third one the verbose one
assertEquals(l, Arrays.asList("foo", "bar")));
assertThat(l, is(Arrays.asList("foo", "bar")));
assertThat(l, is(equalTo(Arrays.asList("foo", "bar"))));
それが失敗したときに自動的にアサートの適切な説明を取得します。このアプローチを使用します。
直接、私はあなたがHamcrestコードと共にassertThat()
を使用することができるのJUnit 4.4を使用して
これが何らかの理由でコンパイルされません(http://stackoverflow.com/questions/1092981/hamcrests-hasitemsを参照してください): をArrayList
FEST Fluent Assertionsを見てください。 IMHO彼らは、Hamcrest(そして同様に強力で拡張性のあるもの)より使いやすく、流暢なインターフェイスのおかげでより良いIDEサポートを持っています。 https://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions
2017年にはAssertJというFESTの支店を利用している人が増えているようです。 – Max
Joachim Sauerの解決策は素晴らしいですが、あなたがすでに結果を確認したいという期待の配列を持っていればうまくいきません。これは、結果を比較したい、あるいは結果にマージされると予想される期待が複数ある場合に、テストで生成済みまたは一定の期待値が既にある場合に発生します。だからではなく、マッチャを使用しての、あなただけの例についてList::containsAll
とassertTrue
を使用することができますすることができます
@Test
public void testMerge() {
final List<String> expected1 = ImmutableList.of("a", "b", "c");
final List<String> expected2 = ImmutableList.of("x", "y", "z");
final List<String> result = someMethodToTest();
assertThat(result, hasItems(expected1)); // COMPILE ERROR; DOES NOT WORK
assertThat(result, hasItems(expected2)); // COMPILE ERROR; DOES NOT WORK
assertTrue(result.containsAll(expected1)); // works~ but has less fancy
assertTrue(result.containsAll(expected2)); // works~ but has less fancy
}
- 1. コレクションのコレクションで最大のコレクションを取得
- 2. サブクエリ内のコレクションの取得
- 3. コレクションの全アイテムを取得
- 4. ObjectIDでMongoDBコレクションを取得
- 5. Web Apiのメソッドを取得するオブジェクトのコレクションを取得
- 6. Laravelコレクションのためのコレクションを取得する
- 7. コレクションへのイメージの保存と取得
- 8. libclang:メソッドの場所のコレクションを取得
- 9. コレクションの最後のN個を取得
- 10. コレクションを取得する
- 11. コレクションを取得するキャッシングパターン
- 12. MongoDBコレクションのデータ型を取得する
- 13. SugarCRM Beanのコレクションを取得する
- 14. EntityFramework ObjectContextから型のコレクションを取得
- 15. コレクションを取得中のBackbone.jsプログレスバー
- 16. コレクションのクエリ文字列を取得
- 17. コレクションのコレクションからユーザー定義オブジェクトを取得する方法
- 18. コレクションでオブジェクトを取得する
- 19. Javaで後継コレクションを取得する
- 20. SparkコネクタMongoDBでコレクション名を取得
- 21. はAngularJS ngRepeatディレクティブでコレクション名を取得
- 22. Magento:属性でフィルタリングされた製品コレクションのオーダーアイテムのコレクションを取得
- 23. Laravel - pluck()で取得したコレクション内の文字列値のフォーマット
- 24. ef7子コレクションの子オブジェクトのプロパティを取得できません
- 25. ActiveRecordで保護者のコレクションの子を取得
- 26. リアクションリーフレットでマーカーのコレクションの境界を取得する方法
- 27. TFSコレクションを取得したWorkItemChangedEventから取得する方法
- 28. VB6.0でコレクションのキーを取得する方法
- 29. は、エンティティクラスのコレクションを取得できません
- 30. バックボーンjsのコレクションからIDでモデルを取得するjs
オハイオ州、私はhamcrestがjunitディストリビューションにそれを作ったことを認識していませんでした。 Go Nat! – skaffman
私がアイテム( "foo"、 "bar")で構成されているが、他のアイテムが存在しないと主張したいのですが、簡単な構文がありますか? – ripper234
上記のコードスニペットを使用して、追加assertTrue(l.size()== 2) – aberrant80