我有一个类,它包含一个@Test方法(sampleTest1)。在那个方法中,我有一些来自其他类的@Test方法调用。当我通过TestNG运行我的测试用例时,它只记录输出控制台中的主要测试方法,并说已经通过了1个测试方法。
如何记录子类文件中定义的所有4种测试方法?
请有人帮助我。
谢谢, 萨西
答案 0 :(得分:0)
Testng只记录它自己调用的@Test方法。但是如果你通过创建测试类的对象进行调用。它不会将其记录为单独的测试。
所以你可以做的是你可以让testng调用它们并通过使用dependsongroups和dependsonmethods来维护执行流程。但要注意一旦你使用取决于组testng将不再保留你的测试类订单。
答案 1 :(得分:-1)
您不能在TestNG的测试用例之间建立父子关系,如果您尝试从父测试中调用它们,它们将执行,但它们不会成为报告的一部分,如果它们失败,您可能没有任何线索。
注释变形金刚方法
如果您想根据某些条件运行方法,那么您可能需要查看Annotation Transformers
您需要通过实现IAnnotationTransformer
接口来创建一个类。在transform方法中检查您的条件,将Enable属性设置为true或false以禁用@Test testcase
。
public class MyTransformer implements IAnnotationTransformer {
private MyParentClass parent;
public MyTransformer(MyParentClass parent){
this.parent = parent;
}
public void transform(ITest annotation, Class testClass,
Constructor testConstructor, Method testMethod)
{
if (checkConditionForMethod(testMethod.getName())) {
annotation.setEnabled(false);
}
}
public boolean checkConditionForMethod(String methodName){
return parent.isValidSwitchForMethod(methodName);
}
}
以编程方式添加Annotation Transformer:
TestNG tng = new TestNG();
tng.setAnnotationTransformer(new MyTransformer(parentClassInstance));
内部课程方法
嵌套测试用例的其他方法是为父类创建内部类,然后在内部类中定义测试用例但没有任何条件。
例如,如果你在类结构之下:
TestClassParent [Testcase1Parent] [Testcase2Parent]
|_ TestSubClass1 [Testcase1Sub1] [Testcase1Sub1]
|_ TestSubClass2 [Testcase1Sub2] [Testcase2Sub2]
然后执行的顺序是这样的:您需要根据执行顺序定义测试用例以实现目标。
Testcase1Sub1
Testcase2Sub1
Testcase1Sub2
Testcase2Sub2
Testcase1Parent
Testcase2Parent