我们应该运行对阵双方真正的DAO /数据库,并针对模拟DAO来验证模拟DAO的行为与实际的DAO DAO测试。为此,我们有这样的结构:TestNG的测试继承和组
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
组运行。一个
@Test
批注与团体fast
和slow
会导致相反的效果 - 既TestMockDAO
和TestDAO
将无论不仅速度快或慢的只测试应该运行运行。甲
@Test
注解与不同的基团,说common
,加在两个TestMockDAO
和TestDAO
加入dependsOnGroups="common"
注释除非common
被包括在组运行这再次导致上述情况2(两者TestMockDAO
和TestDAO
也将不工作正在运行)。
最后,我正在寻找一种方法,能够定义组在子类继承的测试,但它好像在@Test
注释仅适用于测试方法在那个同类中,不是也没有继承的方法,没有@Test
注释。有没有其他的方式来实现这一点(不覆盖子类中的所有方法)?
我试过了,但它不起作用。继承的方法将在默认组中(或者我在基类的'@ Test'注释中指定的任何组),而不在相应的子类所在的组中。 –