如何使用testNG在testreport中记录@Test方法的详细信息

时间:2015-09-04 05:33:05

标签: java webdriver testng

我有一个类,它包含一个@Test方法(sampleTest1)。在那个方法中,我有一些来自其他类的@Test方法调用。当我通过TestNG运行我的测试用例时,它只记录输出控制台中的主要测试方法,并说已经通过了1个测试方法。

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

请有人帮助我。

谢谢, 萨西

2 个答案:

答案 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