Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果有多个testng类,如何执行另一个类的@BeforeMethod_Java_Annotations_Testng - Fatal编程技术网

Java 如果有多个testng类,如何执行另一个类的@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(){

问题陈述:我有多个testng类,它们有@BeforeMethod&@testmethods&一些测试是通过另一个测试方法调用的。在这种情况下,不会执行BeforeMethod方法

例如

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应该相应地预配置测试。如果你能建议一些更好的方法来实现这一点!!!提前谢谢