我可以在TestNG测试用例上指定类范围的组吗?

迈克·斯通:

我有一个基类,它表示TestNG中的数据库测试,我想指定所有从该类扩展的类都属于“ db-test”组,但是我发现这似乎是不可能的。我尝试了@Test批注:

@Test(groups = { "db-test" })
public class DBTestBase {
}

但是,这是行不通的,因为@Test批注将尝试将大量方法引入测试中,并且在运行测试时会在eclipse中弹出警告/错误。

所以我尝试禁用测试,因此至少分配了组:

@Test(enabled = false, groups = { "db-test" })
public class DBTestBase {
}

但是然后任何@BeforeTest(和其他类似的注释)也被禁用了……这当然不是我想要的。

我想以某种方式将类注释为特定类型的组,但在TestNG中似乎不太可能。还有其他想法吗?

VonC:

答案是通过自定义的org.testng.IMethodSelector

它的includeMethod()可以排除我们想要的任何方法,例如公共未注释的方法。

但是,要注册自定义Java MethodSelector,必须将其添加到任何TestRunner管理XMLTest实例中,这意味着您需要自己的自定义TestRunner

但是,要构建自定义TestRunner,您需要通过-testrunfactory选项注册一个TestRunnerFactory

但是TestNG从不考虑-testrunfactory ...所以您还需要定义一个自定义TestNG类:

  • 为了覆盖configure(Map)方法,
  • 因此您实际上可以设置TestRunnerFactory
  • TestRunnerFactory将为您构建自定义TestRunner,
  • TestRunner,它将为XMLTest实例设置自定义XMLMethodSelector
  • XMLMethodSelector将构建自定义IMethodSelector
  • IMethodSelector将排除您选择的任何TestNG方法!

好吧...这是一场噩梦。但这也是一个代码挑战,因此它一定有点挑战;)

所有代码都可以在DZone片段中找到

像往常一样进行代码挑战:

  • 一个Java类(以及很多内部类)
  • 将类复制并粘贴到“源/测试”目录中(因为软件包为“测试”)
  • 运行它(不需要任何参数)

来自Mike Stone的更新:

我将接受这一点,因为这听起来很接近我最终要做的事情,但是我认为我也会补充我所做的事情。

基本上,我创建了一个Groups批注,其行为类似于Test(和其他)批注的groups属性。

然后,我创建了一个GroupsAnnotationTransformer,它使用IAnnotationTransformer查看所有测试和正在定义的测试类,然后修改测试以添加组,这与组排除和包含完美配合。

修改构建以使用新的注释转换器,一切完美!

好吧...一个警告是,它没有将组添加到非测试方法中...因为在我这样做的时候,还有一个注释转换器可以让您转换任何内容,但是却不包含在内在我出于某种原因使用的TestNG中...因此,将您之前/之后的注释方法设置为alwaysRun = true ...是一个好主意,这对我来说已足够。

最终结果是我可以做到:

@Groups({ "myGroup1", "myGroup2"})
public class MyTestCase {
    @Test
    @Groups("aMethodLevelGroup")
    public void myTest() {
    }
}

然后,我使用子类化和所有内容使变压器工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java程序具有Linux方法-我可以在它们上运行Junit测试用例吗?

我可以在测试用例中模拟功能输入吗?

我可以使用单个 Zephyr 测试用例来维护多个设备上的测试执行记录吗?

我如何在 TestNG 中运行来自同一类的多个测试用例

为什么TestNG测试中的非唯一组名会影响其他测试类?我可以在不同的测试类别中使用相同的组名吗?

我可以在Robot Framework中按测试用例重新运行失败的测试吗?

TestNG:测试用例被忽略

我可以使用Jasmine spy编写AngularJS服务的测试用例吗?

我可以将集合传递给DUnitX中的测试用例吗?

我可以获取机器人框架内测试用例步骤的统计信息吗?

我可以使用robot.api 获取失败的测试用例名称吗?

我们可以在一个项目中同时运行Spock测试用例和Junit 5测试用例吗?

PowerMock可以实例化测试用例的内部类吗?

AutoFixture 可以用于生成多个测试用例吗?

它可以修补python测试用例中的函数吗?

我可以为我的测试用例编写我自己版本的 go 的 http client.Do() 函数吗?

我们可以使用soapui中的闭包为每个测试用例执行测试吗

是否可以使用xcode 5在命令行上运行单个测试用例/测试类?

我的测试用例错误类/结构/联合

我可以运行不属于任何组的所有TestNG测试吗(在Maven中)?

我们可以根据测试用例中的值将 URL 参数附加到端点吗?

为什么我的“等待方法”没有通过TestNG测试用例?

如果我的测试用例失败(如何使用TestNG),如何运行特定方法?

我们可以在testlink或任何测试管理工具的单个测试用例中使用多个测试场景吗?

在尝试使用testng.xml运行测试用例时,我没有选择以Testng的身份运行

从非测试用例类进行断言

这些测试用例正确吗?

如何使用Maven TestNG执行失败的测试用例

如何使用testNG执行多个测试用例