代わりcontains
マッチャーを使用することができますが、あなたはおそらくHamcrestの最新バージョンを使用する必要があります。そのメソッドは順序をチェックします。
assertThat(list, contains("foo", "boo"));
ご注文が問題でない場合は、containsInAnyOrder
もお試しください。
contains
正規表現エンジンのコードです:あなたはカスタムマッチャー、この
のようなもの
class ListMatcher extends BaseMatcher {
String[] items;
ListMatcher(String... items) {
this.items = items;
}
@Override
public boolean matches(Object item) {
List list = (List) (item);
int l = -1;
for (String s : items) {
int i = list.indexOf(s);
if (i == -1 || i < l) {
return false;
}
l = i;
}
return true;
}
@Override
public void describeTo(Description description) {
// not implemented
}
}
@Test
public void test1() {
List<String> list = Arrays.asList("foo", "bar", "boo");
Assert.assertThat(list, new ListMatcher("foo", "boo"));
Assert.assertThat(list, new ListMatcher("boo", "foo"));
}
受け入れられた回答を変更することを検討してください。通常、マッチャーを検索する際には、APIに既に含まれているものを優先し、カスタムマッチャーを避けられないケースに置き換えます。 – acdcjunior
あなたは正しいです!ありがとう –
受け入れられた答えは質問に答えません。質問は、期待されたアイテムが実際のリスト内の指定された順序で含まれているかどうかをチェックするだけのマッチャを要求しますが、これらはすべて実際のアイテムではありません。 'Matchers.contains'メソッドは、リストに期待されるアイテムが正確に含まれているかどうかをチェックします。 –