亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選項列表上的 AssertJ

選項列表上的 AssertJ

HUX布斯 2022-06-15 14:43:20
我有一個可選列表,List<Optional<String>> optionals我喜歡用assertj它來斷言幾件事。但我沒能正確地做到這一點——我只在單個 Optional 上找到示例。當然我可以自己做所有的檢查,比如Assertions.assertThat(s).allMatch(s1 -> s1.isPresent() && s1.get().equals("foo"));并鏈接那些,但我仍然有一種感覺,通過 api 有一種更聰明的方式。List<Optional<T>>我在這里錯過了什么,還是在 assertj中沒有支持?
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

AssertJ 似乎沒有為可選集合提供實用程序,但您可以迭代您的列表并對每個項目執行您的斷言。


list.forEach(element -> assertThat(element)

        .isPresent()

        .hasValue("something"));

一種可能更好的方法是收集所有斷言,而不是停留在第一個斷言上。你可以用SoftAssertions不同的方式使用,但我更喜歡這個:


SoftAssertions.assertSoftly(softly ->

    list.forEach(element -> softly.assertThat(element).isPresent())

);


查看完整回答
反對 回復 2022-06-15
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

assertThat(list).allSatisfy(o -> assertThat(o).hasValue("something")));

爪哇文檔:

對于List<Optional<T>>,另請參閱:https://www.javadoc.io/doc/org.assertj/assertj-core/latest/org/assertj/core/api/AbstractOptionalAssert.html#hasValueSatisfying(java.util.function.Consumer)

驗證實際的 Optional 是否包含一個值,并將該值提供給給定的 Consumer 以進行進一步的斷言。應該用作對包含對象進行更深入斷言的方式,作為對值的進一步要求。


查看完整回答
反對 回復 2022-06-15
  • 2 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號