gpt4 book ai didi

java - 如何忽略/跳过包含少量测试方法和 BeforeClass 和 AfterClass 方法的完整 testng 类

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:56 25 4
gpt4 key购买 nike

假设我有 testng.xml,

<suite name="TestSuite" parallel="false">
<test name="smoke" preserve-order="true" verbose="2">
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="com.testClass1"/>
<class name="com.testClass2"/>
</classes>
</test>
</suite>

这可能包含更多接近 10-15 的类,这是我的通用 testng.xml,来自不同的测试数据集,我想要的是跳过 com.testClass1 类,对于特定情况,其余测试应该执行。

我尝试使用 testng 的 IAnnotationTransformer 监听器来实现我的类。

代码片段是,

public class SkipTestClass implements IAnnotationTransformer{
private SessionProfile profile=null;
public void transform(ITestAnnotation annotation, Class testClass,
Constructor testConstructor, Method testMethod) {
if (testMethod != null) {
Test test = testMethod.getDeclaringClass().getAnnotation(Test.class);
if (test != null && !test.enabled() && testMethod.getDeclaringClass().getClass().getName().equalsIgnoreCase("com.testClass1")) {
annotation.setEnabled(false);
}

}

}
}

并在测试类级别调用此监听器,如下

@Listeners(com.SkipTestClass.class),

预期结果:我假设,只有这个类 com.testClass1 及其测试方法以及课前和课后方法应该跳过,而套件的其余部分应该执行。

实际结果:整个套件被跳过。

请问有什么帮助吗?

最佳答案

Whole suite is getting skipped.

我想这是因为运行在某个地方失败了,因为你的监听器看起来不错。您可以设置更高的详细级别来检查发生的情况。

顺便说一句,IMethodInterceptor是一个更好的监听器选择,因为它不依赖于类和/或测试中可能存在或不存在的注释。

public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
List<IMethodInstance> result = new ArrayList<IMethodInstance>();
for (IMethodInstance m : methods) {
if (m.getDeclaringClass() != testClass1.class) {
result.add(m);
}
}
return result;
}

并且更愿意在套件描述中添加此监听器:

<suite name="TestSuite" parallel="false">
<listeners>
<listener class-name="...MyListener"/>
</listeners>
<test name="smoke" preserve-order="true" verbose="2">
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="com.testClass1"/>
<class name="com.testClass2"/>
</classes>
</test>
</suite>

关于java - 如何忽略/跳过包含少量测试方法和 BeforeClass 和 AfterClass 方法的完整 testng 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516643/

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