Unit testing 忽略testng中的类

Unit testing 忽略testng中的类,unit-testing,testing,testng,Unit Testing,Testing,Testng,在运行testng套件时,需要忽略一些测试类。我尝试对需要忽略的类和方法使用@Test(enabled=false)注释。但我的问题是,需要忽略的类扩展了一个抽象类,即使基类上有@test(enabled=false)注释,也不会忽略这个抽象类测试方法。在Junit中,我可以在基类上使用@ignore,而扩展类上的测试方法根本不会被调用。如何在testng中复制这种行为 同样在我的testng套件中,我按包而不是按类运行测试。因此,即使我尝试对类进行分组而忽略组,它也不起作用。 请帮助我收

在运行testng套件时,需要忽略一些测试类。我尝试对需要忽略的类和方法使用@Test(enabled=false)注释。但我的问题是,需要忽略的类扩展了一个抽象类,即使基类上有@test(enabled=false)注释,也不会忽略这个抽象类测试方法。在Junit中,我可以在基类上使用@ignore,而扩展类上的测试方法根本不会被调用。如何在testng中复制这种行为

同样在我的testng套件中,我按包而不是按类运行测试。因此,即使我尝试对类进行分组而忽略组,它也不起作用。



请帮助

我收到了来自谷歌集团(Testng)的Cedric对此的回复。我把它贴在下面作为参考

嗨,保罗

您所看到的是注释继承和默认属性在TestNG中相互作用的方式带来的不幸后果,为了使其更好地工作,已经提出了一个bug(我手头没有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()
}
现在,在方法级别定义的值将覆盖在类上指定的值

修复将涉及使用枚举而不是布尔值(启用、禁用、继承,这将是默认值),但这将破坏向后兼容性,因此我需要为此引入一个新的注释(例如“runStatus”或类似的注释),您的示例将变为

@Test(runStatus = DISABLED)
public class C {
  @Test
  public void f()
}
这有意义吗

--
Cédric

正如Cedric在回复中提到的,方法级测试注释覆盖了类级测试注释。因此,即使在类级别有@test(enabled=false),测试方法也会被启用。我也面临同样的问题。它通过以下方法得到修复

最简单的解决方案是在类级别使用@Test(enabled=false),但从方法级别删除@Test注释。像这样:

@Test(enabled = false)
public class C 
{

  public void f()

}

@CedricBeust:是的,我正在使用TestNG版本6.8