簡體   English   中英

斷言列表僅包含一個滿足條件的元素

[英]Assert list contains exactly one element satisfying condition

在我的JUnit測試中,我想斷言一個列表僅包含一個滿足給定條件的元素(列表中可以有很多元素,但是只有一個元素可以滿足條件)。 我在下面編寫了代碼,但我想知道是否有可能擺脫“新Condition <>”部分並使用“純” lambda? 還是有其他更優雅的方式來完成我想做的事情?

class Foo {
  String u;

  Foo(String u) { this.u = u; }

  String getIt() { return u; }
}

@Test
public void testIt() {
  List<Foo> list = Lists.newArrayList(new Foo("abc"), new Foo("xyz"));

  assertThat(list)
        .haveExactly(1, new Condition<>(
                x -> "xyz".equals(x.getIt()),
                "Fail"));
}

這應該可以工作(但是我還沒有測試過):

assertThat(list).extracting(Foo::getIt)
                .containsOnlyOnce("xyz");

暫無
暫無

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

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