Como faço para afirmar um Iterable contém elementos com uma determinada propriedade?

Suponha que eu queira testar um método com esta assinatura:

List<MyItem> getMyItems();

AssumirMyItem é um Pojo que tem muitas propriedades, uma das quais é"name"acessado viagetName().

Tudo o que me importo em verificar é que oList<MyItem>ou qualquerIterablecontém doisMyItem instâncias, cuja"name" propriedades têm os valores"foo" e"bar". Se quaisquer outras propriedades não corresponderem, eu realmente não me importo com os propósitos deste teste. Se os nomes coincidirem, é um teste bem sucedido.

Eu gostaria que fosse um one-liner, se possível. Aqui está alguma "pseudo-sintaxe" do tipo de coisa que eu gostaria de fazer.

assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"});

Hamcrest seria bom para esse tipo de coisa? Em caso afirmativo, qual seria exatamente a versão mais antiga da minha pseudo-sintaxe acima?

questionAnswers(6)

yourAnswerToTheQuestion