当前位置: 首页 > 知识库问答 >
问题:

如何在多个testng类的情况下执行另一个类的@BeforeMethod

贺波
2023-03-14

例如。

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个答案

荣德厚
2023-03-14

您出现这个问题的原因是因为单元测试框架并不是以这种方式工作的。当涉及到单元测试时,这并不是一个真正的最佳实践,因为您同时测试多个单元。您需要隔离正在尝试测试的单元。在该测试中,在用@BeforeMethod注释的方法中设置所有前置条件。

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

如果您给出了一个更具体的示例,说明您试图测试的内容,那么我可以给出一些如何测试它的代码

 类似资料:
  • 请查看testng.xml并建议 我想运行2个类(下面提到),但面临一些挑战,因为它在下面提到的2个场景下显示了一些不稳定的行为。 这些测试类下的方法具有组和优先级 **目标是使用组运行这些测试 Scenario1:当我使用Threadcount=1时; [test name=“autopracticee”parallel=“classes”thread-count=“1”] 以下是行为: 1.1

  • jaxb绑定 我定义了绑定,将的名称重写为。在XJC生成中,它生成PersonType.class和Ptype.class。 如果我在元素内部定义,那么它不会生成ptype.class。但是我必须在模式的根级别声明,因为这个也被其他模式引用。 我试图在绑定中重写和,但生成了ptype.class。 我如何指示它不要生成ptype.class?

  • TestNG Runner类执行多个功能文件? 我知道我们可以创建一个可以针对多个TestNG测试类的TestNG xml,但是我们可以创建一个可以针对多个Cucumber/ Junit特性文件的TestNG.xml吗?

  • 问题内容: 假设我有一个西服套装和四个西服套装子类别:Heart,Spade,Diamond和Club。 我有一个方法,该方法接收西装作为参数,这是一个类对象,而不是实例。更准确地说,它可能仅接收以下四个值之一:Heart,Spade,Diamond,Club。我该如何做出保证这种事情的断言?就像是: 我正在使用Python 3。 问题答案: 您可以使用像这样。

  • 我试图模拟一个方法,从另一个方法调用,而不使用类对象。在指定的代码中,我想模拟methodA(),它调用methodB(),而不使用对象。 我无法更改现有类中的任何内容。 我已经尝试过: 莫基托。doReturn(“id”)。当(反对)。方法b(员工)