【问题标题】:What's the benefit of Assert Fluent Assertions over Sequential ones?断言流利断言比顺序断言有什么好处?
【发布时间】:2021-01-08 19:24:09
【问题描述】:

在我的团队中,这是一个使用 AssertJ 编写流畅断言的线程,方法如下:

void checkPerson(Person person, String expectedName, Integer expectedAge) {
  assertThat(person)
    .isNotNull()
    .extracting(Person::getName, Person::getAge) 
    .containsExactly(expectedName, expectedAge)
}

但我更喜欢另一种方式:

void checkPerson(Person person, String expectedName, Integer expectedAge) {
  assertThat(person).isNotNull();
  assertThat(person.getName()).isEqualTo(expectedName);
  assertThat(person.getAge()).isEqualTo(expectedAge);
}

我认为我的方式更直接且类型安全。第一种方法有什么优点吗?

【问题讨论】:

  • 这是个人选择的问题。在这两种情况下,类型安全都不是问题。
  • 这不是Java中的问题,但没关系,你会发现it很有用。
  • @Turing85 为什么类型安全不是问题?在第一种情况下,作为containsExactly 的参数,我可以传递String、String 而不是String、Integer。而且我只在运行时得到错误。使用第二种方法,我在编译时得到它
  • @a3dsfcv 你得到的错误是一个断言错误,因为类型不匹配。这是我在测试框架中所期望的,并且符合equals(...) 的一般工作方式。从快速失败的角度来看,您是对的。
  • 输出怎么样?测试失败时,两种样式的错误消息是否相同?

标签: java testing assertj


【解决方案1】:

对我来说主要的好处是可读性——流畅的代码(至少对我来说)更容易阅读并且占用的空间更少。正是出于同样的原因,您在例如构建器类中调用了流利的方法。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2014-07-27
    • 2019-06-03
    • 2016-10-19
    • 2012-10-15
    • 2018-06-25
    • 2022-07-23
    • 2013-09-24
    • 2017-09-20
    相关资源
    最近更新 更多