Wie kann ich behaupten, dass eine Iterable Elemente mit einer bestimmten Eigenschaft enthält?

Angenommen, ich möchte eine Methode mit dieser Signatur Unit-Test:

List<MyItem> getMyItems();

AnnehmenMyItem ist ein Pojo, der viele Eigenschaften hat, von denen eine ist"name", zugegriffen übergetName().

Alles, was mir am Überprüfen liegt, ist dasList<MyItem>, oder irgendeinIterableenthält zweiMyItem Instanzen, deren"name" Eigenschaften haben die Werte"foo" und"bar". Wenn andere Eigenschaften nicht übereinstimmen, kümmere ich mich nicht wirklich um die Zwecke dieses Tests. Stimmen die Namen überein, ist der Test erfolgreich.

Ich möchte, dass es möglichst einzeilig ist. Hier ist eine "Pseudosyntax", wie ich sie gerne machen würde.

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

Wäre Hamcrest gut für so etwas? Wenn ja, was genau wäre die Hamcrest-Version meiner obigen Pseudosyntax?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage