当前位置 : 主页 > 网络安全 > 测试自动化 >

单元测试 – 忽略testng中的一个类

来源:互联网 收集:自由互联 发布时间:2021-06-19
运行我的testng套件时,有一些测试类需要忽略.我尝试对需要忽略的类和方法使用@Test(enabled = false)注释.但我的问题是需要忽略的类扩展了一个抽象类,即使我在基类上有@Test(enabled = false)注
运行我的testng套件时,有一些测试类需要忽略.我尝试对需要忽略的类和方法使用@Test(enabled = false)注释.但我的问题是需要忽略的类扩展了一个抽象类,即使我在基类上有@Test(enabled = false)注释,也不会忽略这个抽象类测试方法.在Junit中,我可以在基类上使用@ignore,并且根本不会调用扩展类上的测试方法.如何在testng中复制此行为.

另外在我的testng套件中,我按包而不是按类运行测试.因此,即使我尝试对该类进行分组并忽略该组,它也不起作用.
< test name =“Test”>
    <组>
      <运行>
        < exclude name =“testClass”/>
      < /运行>
    < /组>
    <封装>

请帮忙

我从谷歌团体(Testng)收到了塞德里克对此的回复.我将它贴在下面作为参考

嗨保罗,

您所看到的是注释和默认属性的继承在TestNG中相互交互的方式的不幸后果,并且已经提交了一个错误以使其更好地工作(我没有id方便).

考虑:

@Test(enabled = false)
public class C {
  @Test
  public void f()
}

当TestNG解析这些注释时,它会发现方法上的@Test未指定“enabled”,因此它会为其指定默认值.该示例变为:

@Test(enabled = false)
public class C {
  @Test(enabled = true)
  public void f()
}

现在,方法级别定义的值将覆盖类上指定的值.

修复将涉及使用枚举而不是布尔值(ENABLED,DISABLED,INHERITED,这将是默认值),但这会破坏向后兼容性,所以我需要为此引入一个新的注释(例如“runStatus”或其他东西像那样),你的例子就会变成

@Test(runStatus = DISABLED)
public class C {
  @Test
  public void f()
}

这有意义吗?

– 塞德里克

网友评论