在AssertJ断言中设置的乘法条件?

时间:2017-11-20 17:15:27

标签: java unit-testing junit assertj

我试图在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;在声明?

由于

2 个答案:

答案 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

希望它有所帮助。