【问题标题】:TestNG one test for two classesTestNG 一考两班
【发布时间】:2015-04-22 10:14:35
【问题描述】:

我在某些类中进行了 TestNG 测试,这些测试扩展了同一个主类。 我需要对 class1 和 class2 进行相同的最后测试,但如果我将 @Test(priority = 666) 添加到主类,它会在所有类之后开始。 我应该如何在主类中注释@Test 在每个类的所有测试之后它会开始什么?

非常感谢。也对不起英语不好。

主类

    public class MainTest {

    @BeforeClass()
    public void setup() {
    //something 
    }

    @AfterClass()
    public void tearDown() {
    //something
    }

    @AfterMethod()
    public void log_writer(Method method) {
    //something
           }

    @Test(priority = 666) {}
    }

类1

    public class Class1 extends MainTest {

    @Test
    public void test1(){}

    @Test
    public void test2(){}  

    }

和class2

    public class Class2 extends MainTest {

    @Test
    public void test1(){}

    @Test
    public void test2(){}  
    }

【问题讨论】:

  • 为什么需要测试依赖于执行顺序?理想情况下,您应该编写彼此独立的测试,以便它们可以并行执行。
  • 我知道。但在这个测试中,我想检查日志,而其他测试通过。
  • 在这种情况下,您可以分解您的“日志检查”测试并将其放在相应的类中,以便它检查在同一类中创建的日志吗?我假设您可以为班级中的测试分配优先级。
  • 是的,但是同样的代码会重复多次。我希望没有它。实际上我有大约 30 个测试课程。
  • 我会使用 TestNG 依赖项,而不是纠结于优先级。

标签: java testng


【解决方案1】:

您正在寻找的是@AfterClass 注释。在 AfterClass 注解的方法中处理要查看日志的部分

【讨论】:

  • 您是否要求在@AfterClass 方法中运行测试?我不确定这是否是个好主意。
  • 我同意在@AfterClass 中运行测试不是一个好主意,但是如果目的是在每个类运行后收集日志,则可以达到目的。
  • 我明白了。我理解这个问题的方式,我虽然 OP 需要检查是否生成了日志(或日志的内容),如果不是,则测试失败,而不是仅仅手动查看日志。
  • @Garbage,是的。在 AfterMethod 中,我在数组中写入日志,并且我想在每个类的最后一次测试中检查这个数组。阅读完答案后,我认为最好将所有类的所有日志都写在一个大文件中,并在所有测试后检查日志。
【解决方案2】:

这是不可能的。基本上每个@Test 只运行一次。如果你需要在每个测试类之后做一些事情,你必须在 MainTest 的方法上使用 @AfterClass 注释。您可以在 MethodInterceptor (http://testng.org/doc/documentation-main.html#methodinterceptors) 中对方法顺序等进行一些修改,但在这种情况下这不是一个好主意。

【讨论】:

  • 在TestNG中你不需要hacks,你可以简单地指定依赖。
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2022-07-22
相关资源
最近更新 更多