如何从另一个类运行TestNG类

时间:2017-05-29 10:43:01

标签: selenium testng

嗨当我按照预期执行时,将以下testNG文件作为独立脚本运行。

public class TESTTNGClass {
    WebDriver driver;
  @Test
  public void f() {
      System.out.println("In Test");
  }
  @BeforeMethod
  public void beforeMethod() {

      System.out.println("Before Test");
  }

  @AfterMethod
  public void afterMethod() {
      System.out.println("After Test");
  }

}  

O / P:

Before Test
In Test
After Test  

但是当从另一个类调用时,为什么同样不起作用。当从另一个班级触发时,请帮助实现相同的目标。以下是调用测试类的类

public class TESTClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TESTTNGClass t = new TESTTNGClass();
        t.f();
    }

}  

O / P:

In Test

2 个答案:

答案 0 :(得分:2)

以下是您的问题的答案:

在理解和试验Java& TestNG你已经削弱了 TestNG Annotation能力。

  • 执行TESTTNGClass.java作为TestNG Test时,一切正常。没问题。
  • 当您将TESTClass.java作为Java Application执行时,Java只会理解您main() TESTTNGClass 对象的Class,然后您正在调用方法 f()。由于Java编译器不知道BeforeMethodTest& AfterMethod的{​​{1}} 注释,它只执行TestNG方法,打印 f() 并结束执行。

关于如何做到:

  • In Test替换为其他名称main()
  • foo()从“TESTTNGClass”课程带入“TESTClass”课程。
  • 当您编写“TESTClass”类扩展“TESTTNGClass”类时。
  • 执行“TESTClass.java”作为f()

您的应用程序将如下所示:

  • TESTTNGClass 类:

    TestNG Test
  • TESTClass 类:

    package Q44240531_TestNG_Main;
    
    import org.testng.annotations.AfterMethod;
    import org.testng.annotations.BeforeMethod;
    
    public class TESTTNGClass 
    {
    
    
      @BeforeMethod
      public void beforeMethod() {
    
          System.out.println("Before Test");
      }
    
      @AfterMethod
      public void afterMethod() {
      System.out.println("After Test");
      }
    }
    

如果这回答你的问题,请告诉我。

答案 1 :(得分:0)

公共类TESTClass扩展了TESTTNGClass {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    TESTTNGClass t = new TESTTNGClass();
    try{
      t.f();
    }catch (Exception e){
        e.printStackTrace();
    }
}

}