API 断言失败消息将显示在我的 testNG 报告中

API assertion failure message to be displayed in my testNG report

我的测试方法中有多个断言 (assertTrue),我想将断言失败传递给我的@AfterMethod,在我的测试失败的断言上,这样我就可以得到我的 API 测试失败。有什么办法可以做到这一点? 使用放心,Maven & TestNG。

每个@AfterMethod都可以接受一个ITestResult作为参数,TestNG在执行过程中本机注入最后一个@Test的测试结果。因此,您可以检查 ITestResult 对象,然后继续进行。

这是一个简单的示例

import org.testng.Assert;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;

public class SampleTestClass {

    @Test
    public void passMethod() {
        Assert.assertTrue(true);
    }

    @Test
    public void failMethod() {
        Assert.assertTrue(false);
    }

    @AfterMethod
    public void afterMethod(ITestResult testResult) {
        if (testResult.isSuccess()) {
            return;
        }
        Throwable throwable = testResult.getThrowable();
        StringWriter sw = new StringWriter();
        PrintWriter writer = new PrintWriter(sw);
        throwable.printStackTrace(writer);
        System.err.println("****" + sw.getBuffer().toString());
    }
}