我们有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批注将产生相同的效果-快速组和慢速组都不会运行测试.
>具有快速和慢速组的@Test批注将产生相反的效果-将同时运行TestMockDAO和TestDAO,而不管只应运行快速测试还是仅运行慢速测试.
>一个@Test注释具有不同的组,例如common,并且在TestMockDAO和TestDAO中都添加了dependsOnGroups =“ common”注释也将不起作用,除非在要运行的组中包含common,这又导致上述情况2(TestMockDAO和运行TestDAO).
最后,我要寻找的是一种能够为子类中的继承测试定义组的方法,但似乎@Test批注似乎仅应用于同一类中的测试方法,也不要继承没有@Test批注的方法.还有其他方法可以实现此目的(不重写子类中的所有方法)吗?