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

Junit断言。fail()方法正在停止执行,需要继续执行并在最后给出结果

施俊明
2023-03-14

场景:有一个Excel表,A列有1000条记录...我需要验证所有值是否相等。

挑战:如果我使用assert。fail()方法,当发生故障时,执行停止。

必填:但我想继续执行并最终给出结果。如果任何值不匹配,需要说测试用例失败并打印不匹配的值。

共有3个答案

宦高岑
2023-03-14

我会循环遍历Excel,将当前行的字符串testString0026 tedString进行比较。任何时候它不匹配,请将testString添加到不匹配。一旦Excel工作表已完全测试,请查看mis匹配是否包含任何内容。如果是这样,请打印mis匹配内的所有值,然后使用JUnit断言以失败测试。

String expectedString = "myTestString";
Set<String> mismatches = new HashSet<String>();
while (...) // loop through Excel rows
{
    String testString = getValueFromExcel();
    if (!testString.equals(expectedString))
    {
        mismatches.add(testString); // add any values that don't match to 'mismatches'
    }
}

if (mismatches.size() > 0)
{
    System.out.println(mismatches.size() + " mismatches were found:");
    // dump the mismatches
    for (String mismatch : mismatches)
    {
        System.out.println("  " + mismatch);
    }
}
// now throw a JUnit assert that the test failed
Assert.assertEquals(mismatches.size(), 0, "Verify that no mismatches were found");
丁俊爽
2023-03-14

你可以这样做:

Map<Whatever, Integer> unequalValues = new HashMap<>();
... iterate your rows; and for each row do
  unequalValues.put(valueFromRow, rowIndex);

最后,您只需检查unequalValures是否包含多个条目。如果是这样,您可以打印所有条目;包括行索引/编号。然后,最后,您调用失败()

如果您只对具有不相等值这一事实感兴趣,而不对它们在哪个行感兴趣......集合而不是Map也可以。

闾丘英悟
2023-03-14

继续将这些值添加到集合中。最后,如果集合有多个值(检查大小),则打印这些值。这意味着所有值都不相同。如果大小为1,则所有值都相同。

 类似资料:
  • 问题内容: 我正在通过Java与Eclipse和TestNG框架一起使用Selenium RC。我有以下代码片段: 第一个断言失败,执行被停止。但我想继续进一步的代码片段。 问题答案: Selenium IDE使用验证执行软断言,这意味着即使检查失败,测试仍将继续,并且可以在测试结束时或在发生硬断言时报告失败。 使用TestNG,可以通过使用自定义测试侦听器来拥有这些软断言。我已经在博客上记录了如

  • 我已经使用testng并行测试用例执行设置,但我只需要执行一次设置方法。 BeforeClass和BeforeMethod也会针对单个线程执行。但我需要在所有线程之前执行一次方法。 如何通过TestNG设置实现这一点? 测试NG。xml

  • 我正在使用git、codebuild和elastic beanstalk构建一个CI/CD管道。 在代码构建执行期间,当由于测试用例的语法错误导致构建失败时,我看到代码构建进展到下一阶段,并最终继续生成工件。 我的理解是,如果构建失败,执行应该停止。这是正确的行为吗? 请参阅下面的buildspec。

  • 问题内容: 我正在尝试引发异常(不使用try catch块),并且程序在引发异常后立即完成。有没有一种方法可以在我引发异常之后继续执行程序?我抛出了在另一个类中定义的InvalidEmployeeTypeException,但是我希望程序在抛出该异常后继续执行。 问题答案: 试试这个:

  • 我制作了一个程序,要求用户输入5位数字,然后程序将查找这些数字的总和。我想知道我怎样才能使程序在计算一次之后一遍又一遍地要求一个数字。我希望用户再试一次,直到他自己想退出。

  • 在一些请求中,我们会做一些日志的推送、用户数据的统计等和返回给终端数据无关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。 这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。 怎么做到呢?我们先看其中的一种方法: local response