簡體   English   中英

使用 hamcrest 檢查列表是否包含特定順序的類實例

[英]check if a List Contains instances of classes in a particular order using hamcrest

嗨,我正在編寫一個單元測試,我需要在其中斷言列表包含按特定順序包含多個類的對象。 我想使用 hamcrest 來做到這一點。

現在我斷言它就像 -

assertThat(actual, hasItem(isA(A.class)));
assertThat(actual, hasItem(isA(B.class)));
assertThat(actual, hasItem(isA(C.class)));

這里我想測試一下,物品的順序是A->B->C。 我試過把它寫成 -

assertThat(actual, contains(isA(A.class), isA(B.class), isA(C.class)));

但這不受支持,有沒有辦法用 hamcrest 匹配器來實現這一點?

使用此方法

public static <E> Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(Matcher<? super E>... itemMatchers)

從文檔:

為 Iterable 創建一個匹配器,當單次通過檢查的 Iterable 產生一系列項目時匹配,每個項目都滿足指定匹配器中的相應匹配器,以相同的相對順序。 例如: assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder(equalTo("b"), equalTo("d")))

在你的情況下,它可能是這樣的:

assertThat(actual, containsInRelativeOrder(isA(A.class), isA(B.class), isA(C.class)));

從 Hamcrest 2.0.0.0 開始可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM