1

我是 JUnit4 的新手,我习惯于 Google Test for C++。我编写了一段代码,使用assertEquals(). 我以为它会输出一些日志信息来告诉用户检查是否成功以及原因,然后继续下一步assertEquals()。但它正在那里停止执行。

我已经搜索过这个主题,似乎 JUnit 的设计与 Google Test 不同,所以我应该为每个断言使用 @Test 方法。但是有没有其他方法可以得到我想要的?我阅读了有关验证方法而不是断言的信息,但它与 Selenium 有关,我什至不知道它是什么。

4

2 回答 2

4

您可以使用ErrorCollector规则来执行多个断言。

@Rule
public ErrorCollector collector = new ErrorCollector();

@Test
public void testMethod()
{
   collector.checkThat(variable, equalTo(otherVaiable));
   collector.checkThat(variable2, equalTo(otherVaiable2));
}

checkThat 方法使用 hamcrest 匹配器进行断言。

于 2013-01-15T22:05:50.657 回答
2

你的研究非常正确。纯粹主义者认为您应该在每个测试用例中都只有一个断言。我不遵循该规则,但是一旦第一个断言失败1就中断测试是个好主意。

考虑以下示例:

assertEquals(1, listOfNames.size());
assertEquals(10, listOfNames.get(0).length());

如果第一个断言失败,则运行第二个断言没有多大意义。级联故障不会帮助您找到根本原因。

1 - 事实上,断言失败时会抛出特殊异常

于 2013-01-15T17:35:33.063 回答