Java 忽略测试用例(JUnit)中的断言失败
目前,我正在使用java和selenium rc编写自动化测试 我想验证用户界面上的所有内容,功能如下:Java 忽略测试用例(JUnit)中的断言失败,java,junit,qa,Java,Junit,Qa,目前,我正在使用java和selenium rc编写自动化测试 我想验证用户界面上的所有内容,功能如下: public String UITest() throws IOException { String result="Test Start<br />"; try { openfile(1); for (String url : uiMaps.keySet()) { selenium.open(url);
public String UITest() throws IOException {
String result="Test Start<br />";
try {
openfile(1);
for (String url : uiMaps.keySet()) {
selenium.open(url);
for (String item : uiMaps.get(url)) {
assertEquals(url+" check: " + item, true,selenium.isTextPresent(item));
result+=url+" check: " + item+" : OK<br />";
}
}
} catch (AssertionError e) {
result+=e.getMessage();
}
result+="Test finished<br />";
return result;
}
公共字符串UITest()引发IOException{
String result=“测试开始
”;
试一试{
openfile(1);
for(字符串url:uiMaps.keySet()){
selenium.open(url);
对于(字符串项:uiMaps.get(url)){
assertEquals(url+“检查:”+项,true,selenium.isTextPresent(项));
结果+=url+“检查:“+项目+”:确定
”;
}
}
}捕获(断言错误){
结果+=e.getMessage();
}
结果+=“测试完成
”;
返回结果;
}
函数“假设返回字符串”包含有关测试的信息。但是,一旦发生断言错误,函数就会停止
因此,我想知道是否有一种方法可以忽略失败并继续执行所有断言验证
感谢您的帮助请勿在函数中断言任何内容。如果函数从Selenium返回null,则返回null,并让调用它的人继续运行,但随后失败: 所有Selenium断言都可以在3种模式下使用:“断言”、“验证”和“等待”。例如,您可以使用“assertText”、“verifyText”和“waitForText”。当“断言”失败时,测试将中止当“验证”失败时,测试将继续执行,并记录失败。这允许一个“断言”来确保应用程序位于正确的页面上,然后是一组“验证”断言来测试表单字段值、标签等
我相信您现在已经自己解决了:try-catch应该在for循环内部,而不是外部;) 您可以使用: ErrorCollector规则允许 执行测试以在测试结束后继续 发现第一个问题(针对 例如,收集所有 表和报表中的行不正确 (一次就把它们全部取出来) 例如,您可以编写这样的测试
public static class UsesErrorCollectorTwice {
@Rule
public ErrorCollector collector= new ErrorCollector();
@Test
public void example() {
String x = [..]
collector.checkThat(x, not(containsString("a")));
collector.checkThat(y, containsString("b"));
}
}
错误收集器使用hamcrest匹配器。取决于您的偏好,这是肯定的还是否定的。我认为问题在于JUnit的assertEquals函数而不是selenium,因为我使用的selenium函数是“isTextPresent”,它只负责返回布尔值。如果我错了,请纠正我。谢谢。根据文档,您始终可以选择:断言TextPresent、验证TextPresent和is TextPresent。每个版本都有不同的行为。它似乎会执行所有的测试,即使有一个失败。但我还有一个问题。我检查了API,它显示表中所有不正确的行,并立即报告它们。我的问题是,我能用什么方法抓住桌子上的信息?谢谢。由于可以访问原始errorcollector的错误列表,我通过继承junit实现了自己的errorcollector。现在它起作用了。非常感谢您的帮助。@user638297是的,实现一个完全符合您需要的MethodRule并不难。你能收集所有你想要的信息吗?JUnit5有类似的吗?