Java 忽略测试用例(JUnit)中的断言失败

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);

目前,我正在使用java和selenium rc编写自动化测试

我想验证用户界面上的所有内容,功能如下:

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有类似的吗?