如果有多个testng类,如何执行另一个类的@BeforeMethod

时间:2016-01-08 17:27:04

标签: java annotations testng

问题陈述:我有多个具有@BeforeMethod& @Test方法&一些测试是通过另一种测试方法调用的。在这种情况下,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

我怎样才能达到同样的目标?

1 个答案:

答案 0 :(得分:0)

您遇到此问题的原因是因为单元测试框架并不意味着以这种方式工作。由于您一次测试多个单元,因此在单元测试方面这不是最佳实践。您需要隔离要测试的单元。在该测试中,在您使用@BeforeMethod注释的方法中设置所有前置条件。

如果你必须在一次测试中使用它们,因为它们是如此紧密耦合,那么创建一个单元测试,实例化两者并在一次测试中以那种方式测试它们。更好的方法是在A测试中模拟B,以便您可以指定B将产生的输出,并在这种情况下测试A的功能。

如果您提供一个更具体的示例,说明您要测试的内容,那么我可以为您提供一些如何测试它的代码。