【发布时间】:2011-10-10 03:25:22
【问题描述】:
我们有 DAO 测试,应该针对真实 DAO/数据库和模拟 dao 运行,以验证模拟 dao 的行为与真实 dao 相同。为此,我们有这样的结构:
public abstract class DAOTestBase
{
public void testSimple()
{
// dummy assertion
assertTrue(true, "Hello");
}
}
@Test(groups = "fast")
public class TestMockDAO extends DAOTestBase
{
// setUp/tearDown and helper methods for mock
}
@Test(groups = "slow")
public class TestDAO extends DAOTestBase
{
// setUp/tearDown and helper methods for real DB
}
不幸的是,这不起作用 - TestNG 认为 testSimple 方法不是测试,因此不会运行它。因此,我尝试注释 testSimple 方法(或 DAOTestBase 类):
没有任何组的
@Test注释将导致相同的效果 - 测试不会针对fast或slow组运行。带有
fast和slow组的@Test注释将导致相反的效果——TestMockDAO和TestDAO都将运行,无论是只运行快速测试还是只运行慢速测试.具有不同组的
@Test注释,例如common,加上在TestMockDAO和TestDAO中添加的dependsOnGroups="common"注释也将不起作用,除非common包含在组中run 再次导致上面的案例 2(TestMockDAO和TestDAO都在运行)。
最后,我正在寻找一种能够为子类中的继承测试定义组的方法,但似乎@Test 注释仅适用于其中的测试方法非常相同的类,也不适用于没有@Test 注释的继承方法。有没有其他方法可以实现这一点(不覆盖子类中的所有方法)?
【问题讨论】:
标签: java inheritance testng grouping