gpt4 book ai didi

java - 如何在@AfterMethod中将@Test标记为失败

转载 作者:行者123 更新时间:2023-11-30 01:47:48 25 4
gpt4 key购买 nike

我正在尝试找出一种方法,在 TetstNG 中是否有任何方法可以将 @Test 注释的测试方法标记为在 @AfterMethod 内失败。

@Test
public void sampleTest() {
// do some stuff
}

@AfterMethod
public void tearDown() {
// 1st operation
try {
// some operation
} catch(Exception e) {
// mark sampleTest as failed
}

// 2nd operation
try {
// perform some cleanup here
} catch (Exception e) {
// print something
}
}

我在所有测试中都需要进行一些验证,这是我在 tearDown() 中的第一个 try-catch block 下进行的。如果该 block 中存在异常,则将测试标记为失败。然后继续执行下一个 try-catch block 。

我无法颠倒 tearDown() 中 try-catch block 的顺序,因为第一个 block 依赖于第二个 block 。

最佳答案

据我所知,您无法在 @AfterMethod 配置方法中执行此操作,因为传递给您的配置方法的 ITestResult 对象 [ 是的,您可以访问测试方法的结果对象通过将参数 ITestResult result 添加到您的 @AfterMethod 带注释的方法] 不会用于更新回原始测试方法的结果。

但是如果您要利用 IHookable 接口(interface),您可以轻松地做到这一点。关于IHookable的更多信息可以引用官方文档here .

下面是一个示例,展示了这一点的实际效果。

import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
import org.testng.annotations.Test;

public class TestClassSample implements IHookable {

@Test
public void testMethod1() {
System.err.println("testMethod1");
}

@Test
public void failMe() {
System.err.println("failMe");
}

@Override
public void run(IHookCallBack callBack, ITestResult result) {
callBack.runTestMethod(result);
if (result.getMethod().getMethodName().equalsIgnoreCase("failme")) {
result.setStatus(ITestResult.FAILURE);
result.setThrowable(new RuntimeException("Simulating a failure"));
}
}
}

注意:我正在使用 TestNG 7.0.0-beta7(今天最新发布的版本)

关于java - 如何在@AfterMethod中将@Test标记为失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57316843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com