Mar*_*ter 0 java junit unit-testing junit5
如何将结果字段的值获取到我的 TestReporter 类中?
@ExtendWith({TestReporter.class})
private TestClass{
String result;
@Test
void testA(){
//some action here
result = some result;
}
}
Run Code Online (Sandbox Code Playgroud)
public class TestReporter implements BeforeAllCallback, BeforeTestExecutionCallback, AfterAllCallback,
TestWatcher {
private static ExtentHtmlReporter htmlReporter;
private static ExtentReports extent;
private static ExtentTest test;
@Override
public void beforeAll(ExtensionContext context) throws Exception {
//set up extent report
}
@Override
public void testSuccessful(ExtensionContext context) {
//not possible, but desired
test.pass(context.getElement.get("result"), MediaEntityBuilder.createScreenCaptureFromPath("test"+count+".png").build());
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在研究做到这一点的方法,但不确定我所寻找的是否可能或如何实施
在必须实现适当回调的扩展中使用反射,例如AfterEachCallback。通过 抓取测试类的实例context.getRequiredTestInstance()。
@ExtendWith(TestReporter.class)
public class TestClass {
String result;
@Test
void testA() {
result = "some result";
}
}
class TestReporter implements AfterEachCallback {
@Override
public void afterEach(final ExtensionContext context) throws Exception {
Object testInstance = context.getRequiredTestInstance();
Field resultField = testInstance.getClass().getDeclaredField("result");
String resultValue = (String) resultField.get(testInstance);
System.out.println("Value of result: " + resultValue);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,anAfterAllContext无法访问测试实例,因为每个测试方法都有一个实例。使用TestWatcher代替AfterEachCallback也可以。
| 归档时间: |
|
| 查看次数: |
1722 次 |
| 最近记录: |