当前位置: 首页 > 知识库问答 >
问题:

在AssertJ断言中设置多个条件?

叶裕
2023-03-14
    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());

共有1个答案

夹谷硕
2023-03-14

您可以使用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">

实际上,由于有详细的错误消息,这比“&&”选项要好。

 类似资料:
  • 使用Hamcrest可以很容易地否定匹配器。例如。您可以这样编写断言:

  • 我正在阅读使用Assertj验证结果的测试类。偶尔,我会发现一个没有断言的断言。 是否有可能在开发周期的某个地方识别这些类?我的第一个猜测是使用自定义声纳规则。虽然我不明白应该如何定义这个方法后面应该跟一个断言(返回void的方法?)。

  • 我有两门课: 还有我的测试: 我希望它能通过,因为解包装可选,将转换为,在最后一个方法中,我只是比较字符串。 但它在最后一行失败了: 我不知道为什么可选包装没有打开

  • 我试图让一些assertj断言更干净一点。我们经常在一个非平凡的层次结构级别上为各种对象断言多个子属性。我一直在使用“提取”从一个对象中提取简单的属性,但我现在尝试做的事情稍微复杂一点,而且它不起作用。我所看到的似乎是assertj中的一个bug,但我不确定它为什么要做它正在做的事情。 我从这样开始: 我想做这样的事情: 我尝试更改测试,因此两个路径字符串是“/reportion”和“/Enter

  • #include <stdio.h> int main(void) { int i = 0; int sum = 0; for (i = 1; i <= 200; i++) { sum += i; } printf("%d\n", sum); return