使用Hamcrest,可以很容易地取消匹配器。例如,您可以编写这样的断言:
assertThat("The dog bites Tom", not(stringContainsInOrder(Arrays.asList("Tom", "dog"))));
Run Code Online (Sandbox Code Playgroud)
也就是说,使用org.hamcrest.core.IsNot,org.hamcrest.core.AnyOf匹配器很容易合并或取反断言。
AssertJ中有等效的东西吗?我知道可以合并/取反Condition。但是普通的断言方法呢?例如,如果您想测试字符串不是仅由数字组成,该怎么做,即取反以下断言:
assertThat("1234xxx5678").containsOnlyDigits();
Run Code Online (Sandbox Code Playgroud)
这就能解决问题:
assertThat(Collections.singleton("1234xxx5678")).noneSatisfy(candidate ->
assertThat(candidate).containsOnlyDigits()
);
Run Code Online (Sandbox Code Playgroud)
有点hacky,意图的清晰度不太符合正常的assertJ标准,但对于否定任何断言的完全一般情况,这就是我们迄今为止所拥有的。
当与链式断言结合使用时,流畅的 not() 会令人困惑,但我确实希望我们可以在 AbstractObjectAssert 上有一个通用的 doesNotSatisfy(Consumer)
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |