嗨当我按照预期执行时,将以下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
答案 0 :(得分:2)
以下是您的问题的答案:
在理解和试验Java
& TestNG
你已经削弱了 TestNG 的Annotation
能力。
TESTTNGClass.java
作为TestNG Test
时,一切正常。没问题。TESTClass.java
作为Java Application
执行时,Java只会理解您main()
TESTTNGClass 对象的Class
,然后您正在调用方法 f()
。由于Java编译器不知道BeforeMethod
,Test
& AfterMethod
的{{1}} 注释,它只执行TestNG
方法,打印 f()
并结束执行。关于如何做到:
In Test
替换为其他名称main()
。foo()
从“TESTTNGClass”课程带入“TESTClass”课程。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();
}
}
}