【问题标题】:How write a compound Hamcrest statement (with a logical "or" operation)如何编写复合 Hamcrest 语句(使用逻辑“或”操作)
【发布时间】:2014-05-30 20:44:02
【问题描述】:

我将如何使用 Hamcrest 编写以下 JUnit 断言?

assertTrue(var1 == 5 || var2 == 10);

我不能使用 anyOf() 匹配器包装器,因为我不需要多个匹配器,我需要多个语句,每个变量一个 var1var2

【问题讨论】:

  • 你是说你不能再使用org.junit.Assert.assertTrue了吗?
  • @azurefrog 我想停止使用 assertTrue 并开始使用 hamcrest 匹配器
  • 在 var1 和 var2 成为单个对象的属性之前是不可能的,因为 Hamcrest 匹配器只验证一个对象。
  • @StefanBirkner 谢谢你,我希望在 hamcrest 有可能

标签: java junit hamcrest


【解决方案1】:

您可以通过将变量转换为单个复合对象来将其编写为单个 Hamcrest 断言:

assertThat(ImmutableList.of(var1, var2),
    either(contains(is(5), anything()))
    .or(contains(anything(), is(10))));

我认为这不是特别容易理解,也无助于解释这意味着什么以及为什么这代表着成功。

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多