为了账号安全,请及时绑定邮箱和手机立即绑定

是否有类似 ITestResult(使用 testng) 的等效类仅适用于 JUnit?

是否有类似 ITestResult(使用 testng) 的等效类仅适用于 JUnit?

杨魅力 2023-08-04 15:28:11
我目前正在使用 ExtentReport 和 TestNG 来获取测试结果。我现在只能使用 JUnit,所以我想知道如何在不使用 TestNG 的情况下将当前代码转换为具有相同的功能我见过其他人使用 TestWatcher 或 RunListener 的示例,但我不太确定如何根据我的需要实现它。尤其是对我正在使用的所有东西都是新手@BeforeTest public void setup() {     htmlReporter = new ExtentHtmlReporter(new File(fileLocation));     htmlReporter.loadXMLConfig(new File(FileReaderManager.getInstance().getConfigReader().getReportConfigPath()));     reports = new ExtentReports();     reports.attachReporter(htmlReporter);}@AfterTestpublic void cleanup() {    reports.flush();}@BeforeMethodpublic void register(Method method) {    String testName = method.getName();    testInfo = reports.createTest(testName);}@AfterMethodpublic void captureStatus(ITestResult result) {    if (result.getStatus() == ITestResult.SUCCESS) {        testInfo.log(Status.PASS, "Test: " + result.getName() + " passed");    } else if (result.getStatus() == ITestResult.FAILURE) {        testInfo.log(Status.PASS, "Test: " + result.getName() + " failed");        testInfo.log(Status.FAIL, "Test FAILURE: " + result.getThrowable());    } else if (result.getStatus() == ITestResult.SKIP) {        testInfo.log(Status.PASS, "Test: " + result.getName() + " skipped");    }}`我想在不使用 ITestResult 和 testNG 注释的其余部分的情况下从这些函数中重新生成相同的结果
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您需要做的是创建一个处理测试结果的规则。该规则将被创建为 TestWatcher,然后您将覆盖其失败和成功的方法。例子:


@Rule

public TestWatcher watchman = new TestWatcher() {

    @Override

    protected void failed(Throwable e, Description description) {

        // Handle logging of failing tests

        System.out.println("Fail!");

    }


    @Override

    protected void succeeded(Description description) {

        // Handle logging of succeeding tests

       System.out.println("Success!");

    }

};

描述参数包含有关失败类的信息http://junit.sourceforge.net/javadoc/org/junit/runner/Description.html


至于方法注释,以下注释是 TestNG - JUnit 4 的等效项:


@BeforeTest - @BeforeClass


@AfterTest - @AfterClass


@BeforeMethod - @Before


@AfterMethod - @After


以下代码演示了如何构建测试类:

public class MyTestClass {

    @Rule

    public TestWatcher watchman = new TestWatcher() {

        @Override

        protected void failed(Throwable e, Description description) {

            // Handle logging of failing tests

            System.out.println("Fail!");

        }


        @Override

        protected void succeeded(Description description) {

            // Handle logging of succeeding tests

            System.out.println("Success!");

        }

    };


    @BeforeClass

    public static void setup() {

        //Some setup before all test methods

    }


    @AfterClass

    public static void cleanup() {

        // Some cleanup after all test methods

    }


    @Before

    public void register() {

        // Some setup before each test method

    }


    @Test

    public void succeedingTest() {

        Assert.assertTrue(true);

    }


    @Test

    public void failingTest() {

        Assert.assertTrue(false);

    }

}


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信