Java 如果有多个testng类,如何执行另一个类的@BeforeMethod
问题陈述:我有多个testng类,它们有@BeforeMethod&@testmethods&一些测试是通过另一个测试方法调用的。在这种情况下,不会执行BeforeMethod方法 例如Java 如果有多个testng类,如何执行另一个类的@BeforeMethod,java,annotations,testng,Java,Annotations,Testng,问题陈述:我有多个testng类,它们有@BeforeMethod&@testmethods&一些测试是通过另一个测试方法调用的。在这种情况下,不会执行BeforeMethod方法 例如 public class A { @BeforeMethod public void preCheck(){ System.out.println("Pre-Check A"); } @Test public void check(){
public class A {
@BeforeMethod
public void preCheck(){
System.out.println("Pre-Check A");
}
@Test
public void check(){
System.out.println("Check A");
B objB = new B();
objB.check();
}
}
public class B {
@BeforeMethod
public void preCheck(){
System.out.println("Pre-Check B");
}
@Test
public void check(){
System.out.println("Check B");
}
}
当我将类A作为Testng类执行时,我得到以下输出
Pre-Check A
Check A
Check B
而期望的输出是
Pre-Check A
Check A
Pre-Check B
Check B
我怎样才能做到这一点呢?您之所以会遇到这个问题,是因为单元测试框架不应该以这种方式工作。当涉及到单元测试时,这并不是一个真正的最佳实践,因为您同时测试多个单元。您需要隔离要测试的单元。在该测试中,在用@BeforeMethod注释的方法中设置所有的前置条件 如果您必须在一个测试中使用它们,因为它们是如此紧密耦合,那么创建一个单元测试来实例化它们,并在一个测试中以这种方式对它们进行测试。更好的方法是在A测试中模拟B,这样您就可以指定B将产生什么输出,并在这种情况下测试A的功能
如果您给出一个更具体的示例,说明您要测试什么,那么我可以给您一些代码,说明如何测试它。您应该创建一个对象层次结构。尝试使用testng.xml文件hi@Josh调用,感谢您的输入。我正在为端到端集成用例创建一个测试框架,这些用例可能涉及不同的组件,例如web服务api测试、web驱动程序UI测试、对数据库的sql调用等,这些测试可能是单个测试,也可能不是单个测试。我的计划是为类似的组件构建专用库,使它们具有通用性和可互操作性,也可供我组织中的其他团队使用。例如,我在UI上执行一些操作,并使用基于rest的web服务调用验证它们。因此,我的测试脚本将调用->MasterTests.java->UITests.java->webservicests.java等类中的方法。现在,我需要为这些类中的每一个类提供beforemethods,以便它能够满足广泛的用例,而不依赖于特定的入口点,因为例如,其他一些团队可能只需要调用webservicests.java&因此beforemethod应该相应地预配置测试。如果你能建议一些更好的方法来实现这一点!!!提前谢谢