【发布时间】:2012-07-17 09:48:36
【问题描述】:
我正在试验 testng。我的目标是在几个类中拥有测试方法,并在一个单独的类中准备和总结一堆测试的“支持”方法。
另一个要求是,在测试套件中,必须为多个测试部分调用支持方法。例如。第一部分包含 testA 和 testB,第二部分包含 testC 和 testD。这将导致以下步骤:
support1, testA, testB, support2, support1, testC, testD, support2
我的第一个(部分)有效的方法是用@Test 注释所有方法,使用组并定义组之间的依赖关系,例如测试方法依赖于一组“setUp”,在上面的例子中是一组支持方法“support1”。
这种方法的问题是支持的方法算作测试,所以生成的报告显示错误的“真实”测试数量。
接下来的想法是使用@BeforeGroups和@AfterGroups,将支持的方法放在一个组中,并使用组依赖。支持的方法不应再被视为测试。但我一开始就被困住了。
例如我试过
@BeforeGroups (groups = {"setUp"})
对于Support 类中的设置方法,以及
@Test(groups = { "TestA" }, dependsOnGroups = { "setUp" })
在“真正的”测试类中。这会导致以下(简化的)错误:
[testng] DependencyMap::Method "TestClass.testSomething()[...]" depends on nonexistent group "setUp"
为什么组“setUp”不存在?我是不是忽略了什么?
或者还有其他可行的方法吗?
感谢您的帮助!
编辑: 测试从 Ant 开始,我使用这样的 testng.xml:
<test name="TestA">
<groups>
<run>
<include name="setUp" />
<include name="TestA"/>
<include name="tearDown"/>
</run>
</groups>
<classes>
<class name="seleniumtest.test.technical.Support"/>
<class name="seleniumtest.test.business.TestClassA"/>
</classes>
</test>
<test name="TestB">
<groups>
<run>
<include name="setUp" />
<include name="TestB"/>
<include name="tearDown"/>
</run>
</groups>
<classes>
<class name="seleniumtest.test.technical.Support"/>
<class name="seleniumtest.test.business.TestClassB"/>
</classes>
</test>
【问题讨论】:
-
你能分享更多代码吗?给出一个好的答案会很有帮助!顺便说一句,我通常将设置方法和实际测试作为同一个类的一部分!
-
另外你能告诉你你是如何运行测试的吗?您是否使用 testng.xml 来运行测试?
-
测试使用 testng.xml 文件运行。我在问题中添加了一个示例。
-
在同一个类中拥有支持方法和测试方法并不是我想要的,因为支持方法的重用。