Java 继续测试失败的TestNG

Java 继续测试失败的TestNG,java,testng,Java,Testng,我有一个带有2个断言的测试方法。第一个断言代码失败,因此第二个断言代码没有运行 如果不使用SoftAsserter,如何使所有线路运行?我希望积累所有的错误,并在我的方法和扔他们 下面是我的代码示例: @Test public void SimpleTest() { asserter.assertEquals(true,false); asserter.assertEquals(5,5); } 以下是如何在不使用SoftAssert的情况下重写测试: @Test public

我有一个带有2个断言的测试方法。第一个断言代码失败,因此第二个断言代码没有运行

如果不使用SoftAsserter,如何使所有线路运行?我希望积累所有的错误,并在我的方法和扔他们

下面是我的代码示例:

@Test
public void SimpleTest()
{
    asserter.assertEquals(true,false);
    asserter.assertEquals(5,5);
}

以下是如何在不使用SoftAssert的情况下重写测试:

@Test
public void simpleTestFailure() {
    check(
            () -> Assert.assertEquals(true, false),
            () -> Assert.assertEquals(5, 5));
}

@Test
public void simpleTestOK() {
    check(
            () -> Assert.assertEquals(5, 5));
}

private void check(Runnable... runnables) {
    boolean success = true;
    int index = 0;
    for (Runnable runnable : runnables) {
        try {
            index++;
            runnable.run();
            System.out.println(String.format("Assertion %s succeeded", index));
        } catch (AssertionError ae) {
            System.err.println(String.format("Assertion %s failed:\n%s", index, ae));
            ae.printStackTrace(System.err);
            success = false;
        }
    }
    Assert.assertTrue(success);
}
此解决方案可以进一步优化以更好地满足您的需要。

您可以使用

@测试(始终运行=真)


无论之前的测试是否失败,测试都将继续执行。

为什么不使用SoftAssert?SoftAssert似乎正是为了这个目的而设计的……因为它会影响其他一些代码。我必须使用普通的Asserter,让它返回测试,并且不让它失败“它会影响其他代码”-你是什么意思?所以我唯一的想法是将每个assert放在单独的try-catch中,在catch块中,将异常添加到异常集合中,您在测试结束时以某种方式处理的内容我唯一要更改的是,
check
取Runnable。。。作为输入,并在内部评估所有任务是否成功完成。然而,这就是我所说的!