我试图在assertJ上设置乘法条件,但却找不到examplesGit。
我目前写道:
assertThat(A.getPhone())
.isEqualTo(B.getPhone());
assertThat(A.getServiceBundle().getId())
.isEqualTo(B.getServiceBundle().getId());
但希望有类似的东西:
assertThat(A.getPhone())
.isEqualTo(B.getPhone())
.And
(A.getServiceBundle().getId())
.isEqualTo(B.getServiceBundle().getId());
好像我使用链接这不会起作用,因为我需要差异数据(id而不是电话)。有没有可能把它全部混合到一个断言命令?它看起来没有任何可能性(算法明智),但可能还有一些其他的想法和&& amp;在声明?
由于
答案 0 :(得分:4)
您可以将soft assertions与AssertJ结合使用以组合多个断言并一次性评估这些断言。软断言允许组合多个断言,然后在一次操作中评估这些断言。它有点像事务性断言。您设置断言包然后提交它。
SoftAssertions phoneBundle = new SoftAssertions();
phoneBundle.assertThat("a").as("Phone 1").isEqualTo("a");
phoneBundle.assertThat("b").as("Service bundle").endsWith("c");
phoneBundle.assertAll();
它有点冗长,但它可以替代“&&” - 断言。错误报告实际上非常精细,因此它指向失败的部分断言。所以上面的例子将打印出来:
org.assertj.core.api.SoftAssertionError: The following assertion failed: 1) [Service bundle] Expecting: <"b"> to end with: <"c">
实际上这比“&amp;&amp;”更好选项由于详细的错误消息。
答案 1 :(得分:0)
gil.fernandes建议有我的投票,你也可以在A上写一个condition。
希望它有所帮助。