【问题标题】:How do I assert to accept one of multiple possible values in JUnit如何断言接受 JUnit 中的多个可能值之一
【发布时间】:2013-11-01 09:31:23
【问题描述】:

我有一个测试在完成后返回一些值。返回的值是String,并且可以根据测试中的某些 if 条件具有几个可能的值之一。 但在assert 语句中,我只能检查Expected 值之一,不能同时检查两者。

我该怎么做?谢谢。

【问题讨论】:

标签: testing junit automated-tests assert multiple-value


【解决方案1】:

我的解决方案是保存结果,然后运行 ​​Jtest,结果是在一系列接受的解决方案中。

例如:

`it("Test Message", () => {
    const result = testFunction(inputValue);
    assert.equal((result in [possibeResult1, possibleResult2, ...]), true);
});`

【讨论】:

  • 欢迎来到 SO。答案应包括对解决方案/答案的解释,而不仅仅是代码。使用现有已接受答案回答旧问题时,请花一些时间解释为什么您的答案不同或对其他答案的改进/更新。
  • 对此答案的一个可能改进是在受信任的来源中引用源材料。例如dzone.com/articles/multiple-junit-asserts-can
【解决方案2】:

我将为此使用AssertJ

 assertThat(value).isIn(expected1, expected2, expected3);

代码比 Hamcrest 简单得多。

【讨论】:

    【解决方案3】:

    使用带有 OR 的布尔表达式不起作用?

    【讨论】:

    • 这是我对 junit 的第一次测试。你能详细说明一下吗?
    • 如果我理解您的问题,您有一个函数可以根据传入的参数从一组有限的可能值中返回一个值。您有兴趣检查该函数是否返回其中之一,(不重要的是:我不确定我是否理解这一点,这样它是一个相当弱的测试)而不是别的东西。所以你可以做一个布尔断言并检查 result.equals(possibleValue1) ||结果.equals(possibleValue2) ...
    • 更好的测试将检查正确的值是否返回 w.r.t。返回所有可能值的输入
    • 非常感谢您的建议。我可以在我的测试中设置一个条件来返回真假,这样我就不必担心我的断言了吗?
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2010-09-22
    • 2020-10-25
    • 2011-03-15
    • 1970-01-01
    • 2019-01-14
    • 2022-11-02
    相关资源
    最近更新 更多