2015-09-04 97 views
-1

我有一个类,它包含一个@Test方法(sampleTest1)。在那个方法中,我有4个来自其他类的@Test方法调用。当我通过TestNG运行我的测试用例时,它仅在输出控制台中记录主要测试方法,并表示已通过1个测试方法。如何在testreport中使用testNG记录@Test方法的详细信息

如何记录在子类文件中定义的所有4种测试方法?

请有人可以帮助我。

感谢, 萨西

+0

为什么不能在父类中定义它们? – Garry

+0

我有一个像测试开关一样的流程。这是在父类和控制我的执行活动。请假设sampleTest1是基于if条件的我的switch方法它必须调用子类文件中适当的测试方法。 – SKumar

+0

你能分享一些代码吗? – juherr

回答

-1

你不能有测试用例的TestNG的之间的父子关系,如果你尝试从父测试打电话给他们,他们会执行,但他们不会是报告的一部分,你可能没有任何线索,如果他们失败。

注释变形金刚方法

如果你想运行基于某些条件的方法,那么你可能要看看Annotation Transformers

您需要通过实现IAnnotationTransformer接口创建一个类。在变换方法中检查您的条件,将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); 
    } 
} 

您添加注释变压器编程:

TestNG tng = new TestNG(); 
tng.setAnnotationTransformer(new MyTransformer(parentClassInstance)); 

内部类接近

其他方式对嵌套测试用例为您的父类创建内部类,然后定义内部类内的测试用例,但没有任何条件

例如,如果你在下面的阶级结构:

TestClassParent [Testcase1Parent] [Testcase2Parent] 
    |_ TestSubClass1 [Testcase1Sub1] [Testcase1Sub1] 
    |_ TestSubClass2 [Testcase1Sub2] [Testcase2Sub2] 

然后执行顺序将是这样的:你需要按顺序执行,以实现自己的目标来定义测试用例。

Testcase1Sub1 
Testcase2Sub1 
Testcase1Sub2 
Testcase2Sub2 
Testcase1Parent 
Testcase2Parent 
+0

感谢您的输入。 – SKumar

+0

欢迎您@SKumar – Garry

0

Testng仅记录它自称的@Test方法。但是,如果您通过创建测试类的对象来调用。它不会将其作为单独的测试记录下来。

所以你可以做的是你可以让testng调用它们并通过使用dependsongroups和dependsonmethods维护执行流。但要小心,一旦你使用取决于组testng不会保留你的测试类的顺序了。

相关问题