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

我的测试用例中的Junit断言或条件

缑永年
2023-03-14

在我的测试用例中,我得到一个整数值:

int val = getXXX();

然后,我想检查val是否等于3或等于5,这两种情况都可以。所以,我做到了:

assertTrue(val == 3 || val==5);

我运行了我的测试,日志显示val是5,但是我上面的断言代码由于断言失败错误而失败。似乎我不能使用assertTrue(…) 这样,那么,如何检查或条件是否为真?


共有3个答案

仲智
2023-03-14

虽然Harmcrest匹配器可以完成这项工作,但这些常量可以很容易地重构为更重要的常量,如有效值列表。然后,您可以使用contains方法检查列表中是否存在该值-IMO也更易于阅读:

public class Foo {
    public static final List<Integer> VALID_VALUES = Arrays.asList(3, 5);
}

@Test
public void testName() {
    int i = 5;
    Assert.assertTrue(Foo.VALID_VALUES.contains(i));
}
李飞翼
2023-03-14

我试着写快速测试:

@Test
public void testName() {
    int i = 5;
    junit.framework.Assert.assertTrue(i == 3 || i == 5);

}

它总是在传递,所以我想当你的值改变时,中间会有一些代码。你可以用

org.junit.Assert.assertEquals(5, i);

要检查值-此断言将打印出错误信息,例如:

java.lang.AssertionError: 
Expected :4
Actual   :5
阴宏爽
2023-03-14

您可以使用Hamcrest matchers在此处获得更清晰的错误消息

int i = 2;
assertThat(i, Matchers.either(Matchers.is(3)).or(Matchers.is(5))

or

int i = 2;
assertThat(i, Matchers.anyOf(Matchers.is(3),Matchers.is(5)));

这将更清楚地解释:

Expected: (is <3> or is <5>)
     but: was <2>

准确显示期望值和提供的不正确值。

 类似资料:
  • 我对TDD和JUnit有些陌生,我知道我可以为我在代码中实现的方法编写测试用例。 显然,我的代码中有一些方法需要测试几个角落案例来验证方法实现是否正常。由于通常良好的做法是在代码中保持每个方法一个测试方法,因此我必须为这种方法添加多个断言,如本答案所述。https://stackoverflow.com/a/762582/5715934 但是,当我执行测试用例时,我没有获得测试方法中每个断言的测试

  • 基本上,问题是是否有AssertJ(首选)或JUnit断言: 我的测试类(CUT)扩展了JAXB的。解组XML文件时,它应该保证相等的对象恰好存在一次。为了验证这一点,我的测试当前看起来是这样的(在示例中,标准ctor创建相等对象):

  • 我以前写过一个测试,它成功了,但现在我得到了一个断言错误:JSON路径没有值。

  • 我正在使用JUnit和Apache Log4J来学习TDD和日志服务的最佳实践。我有一个类,它有一个方法,它将尝试连接到MySQL数据库并返回类型的对象。 我有一个类GenericTaskInterpreterTests,在这里我为这个方法(和其他方法)编写了测试用例。 在这个测试用例场景中,如何使用TestWatcher记录断言失败

  • 问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,

  • 我对junit mockito非常陌生,并尝试使用mockito编写junit测试用例。 这是我的方法,我必须为此编写一个jUnit。 ChefService和ChefApi传递的方法参数来自第三方api 这里是呼叫chefService。listCookbookVersions()将返回CookBookVersion类类型的迭代器,如