猿问

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

我目前正在使用 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);

}


@AfterTest

public void cleanup() {

    reports.flush();

}


@BeforeMethod

public void register(Method method) {

    String testName = method.getName();

    testInfo = reports.createTest(testName);


}


@AfterMethod

public 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 注释的其余部分的情况下从这些函数中重新生成相同的结果


杨魅力
浏览 114回答 1
1回答

翻过高山走不出你

您需要做的是创建一个处理测试结果的规则。该规则将被创建为 TestWatcher,然后您将覆盖其失败和成功的方法。例子:@Rulepublic 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);    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答