Java 是否可以选择断言以获取故障日志消息并继续? 我刚进入JuniT4,我习惯了C++的谷歌测试。我使用assertEquals()编写了一段包含许多检查的代码。我认为它会输出一些日志信息,告诉用户检查是否成功以及原因,然后继续执行下一个assertEquals()。但它正在停止执行

Java 是否可以选择断言以获取故障日志消息并继续? 我刚进入JuniT4,我习惯了C++的谷歌测试。我使用assertEquals()编写了一段包含许多检查的代码。我认为它会输出一些日志信息,告诉用户检查是否成功以及原因,然后继续执行下一个assertEquals()。但它正在停止执行,java,junit4,Java,Junit4,我已经搜索了这个主题,看起来JUnit的设计与Google Test不同,所以我应该为每个断言使用@Test方法。但是有没有别的办法可以得到我想要的?我读过verify方法而不是assert,但它与Selenium有关,我甚至不知道它是什么。你的研究非常正确。纯粹主义者认为每个测试用例中应该只有一个断言。我不遵循这个规则,但在第一次断言失败时立即中断测试1是个好主意 考虑以下示例: assertEquals(1, listOfNames.size()); assertEquals(10, lis

我已经搜索了这个主题,看起来JUnit的设计与Google Test不同,所以我应该为每个断言使用@Test方法。但是有没有别的办法可以得到我想要的?我读过verify方法而不是assert,但它与Selenium有关,我甚至不知道它是什么。

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

考虑以下示例:

assertEquals(1, listOfNames.size());
assertEquals(10, listOfNames.get(0).length());
如果第一个断言失败,那么运行第二个断言没有多大意义。级联故障不会帮助您找到根本原因


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

您的研究基本正确。纯粹主义者认为每个测试用例中应该只有一个断言。我不遵循这个规则,但在第一次断言失败时立即中断测试1是个好主意

考虑以下示例:

assertEquals(1, listOfNames.size());
assertEquals(10, listOfNames.get(0).length());
如果第一个断言失败,那么运行第二个断言没有多大意义。级联故障不会帮助您找到根本原因

1-事实上,当断言失败时会引发特殊异常

您可以使用该规则进行多个断言

@Rule
public ErrorCollector collector = new ErrorCollector();

@Test
public void testMethod()
{
   collector.checkThat(variable, equalTo(otherVaiable));
   collector.checkThat(variable2, equalTo(otherVaiable2));
}
checkThat方法使用hamcrest匹配器进行断言。

您可以使用该规则进行多个断言

@Rule
public ErrorCollector collector = new ErrorCollector();

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

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

看起来像我正在寻找的解决方案。但仍有一个问题:它无法识别与之相同的方法。我在JUnitAPI上搜索了一下,发现第二个参数必须是Matcher对象,但我还没有找到关于匹配器的信息available@RomanRdgzequalsTo是org.hamcrest.corematchers中的一个静态方法,看起来就像我正在寻找的解决方案。但仍有一个问题:它无法识别与之相同的方法。我在JUnitAPI上搜索了一下,发现第二个参数必须是Matcher对象,但我还没有找到关于匹配器的信息available@RomanRdgzequalsTo是org.hamcrest.CoreMatchers中的一种静态方法