java – 我可以在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中似乎不太可能.有没有人有其他想法? 解决方法
答案是通过一个自定义org.testng.IMethodSelector:
它的includeMethod()可以排除任何我们想要的方法,像一个public not-annotated方法. 但是,要注册自定义Java MethodSelector,您必须将其添加到任何TestRunner管理的XMLTest实例中,这意味着您需要自己的自定义TestRunner. 但是,要构建定制的TestRunner,您需要通过-testrunfactory选项注册TestRunnerFactory. 但是,TestNG类绝对不会被考虑,所以你还需要定义一个自定义的TestNG类: >为了覆盖configure(Map)方法, 好吧,这是一场噩梦.但它也是一个代码挑战,所以一定有点挑战;) 所有代码可在DZone snippets. 像往常一样的代码挑战: >一个java类(和很多内部类) Mike Stone的更新: 我会接受这一点,因为它听起来和我最后所做的很接近,但是我想我会添加我所做的一切. 基本上,我创建了一个Groups注释,其行为类似于Test(和其他)注释的groups属性. 然后,我创建了一个GroupsAnnotationTransformer,它使用IAnnotationTransformer查看正在定义的所有测试和测试类,然后修改测试以添加组,这与组排除和包含完全一致. 修改构建以使用新的注释变压器,这一切都可以完美地工作! 嗯…一个警告是,它不会将组添加到非测试方法…因为在这个时候,还有一个注释变压器,可以让你转换任何东西,但它不包括在内在TestNG我正在使用某些原因…所以这是一个好主意,使您的前/后注释方法alwaysRun = true …这对我来说足够了. 最终的结果是我可以做的: @Groups({ "myGroup1","myGroup2"}) public class MyTestCase { @Test @Groups("aMethodLevelGroup") public void myTest() { } } 我使变压器工作与子类和一切. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |