3

整数のリストを Hamcrest と一致させようとしていますが、オンラインでいくつかの例を見ましたが、実行時例外が発生しています。

正しい構文を教えてください。

List<Integer> numbers = Arrays.asList( 1, 2, 3, 4, 5 );
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(1))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(2))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(3))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(4))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(5))));

ありがとう

4

3 に答える 3

7

リスト項目の順序が重要でない場合:

assertThat(numbers, hasItems(1, 2, 3, 4, 5));

そうであれば:

assertThat(numbers, is(equalTo(Arrays.asList(1, 2, 3, 4, 5))));

コレクションに他の要素を含めない場合は、サイズも確認してください。

assertThat(numbers, hasSize(5));
于 2012-12-14T12:20:36.037 に答える
2

コレクションに特定のアイテムが含まれていることを確認するには:

assertThat(numbers, hasItem(3));

コレクションに複数のアイテムが含まれていることを確認するには:

assertThat(numbers, hasItems(3, 4));

コレクションに正確に特定のアイテムが含まれていることを確認するには:

assertThat(numbers, contains(1, 2, 3, 4, 5))

順序を気にせずに、コレクションに特定の項目が含まれていることを確認するには:

assertThat(numbers, containsInAnyOrder(5, 4, 3, 1, 2))
于 2012-12-15T07:58:54.680 に答える
1

使うだけ

assertThat(numbers, hasItem(1));
...

または

assertThat(numbers, hasItems(1, 2, 3, 4, 5));

ここでは順序は関係ありません。

于 2012-12-14T12:20:45.033 に答える