我一直在寻找一种精确的方法来为DAO层(Java,Spring,Hibernate)创建集成测试,主要用于通用CRUD操作(readAll(),getById(),insert(),update(),delete( )等。几个月。到目前为止我所发现的是1)过于费力的方法,其代码数量与真实的源代码相当,或者2)过于复杂/不可读/不灵活的方法。 我到目前为止所做的一次尝试如下: 如果我们说像这样的通用DAO接口:
public interface GenericDAO<T> {
Long insert(T t);
void update(T t);
List<T> getAll();
T getById(Long id);
void delete(T t);
}
然后我们可以提出一些模板方法(因为所有测试都是默认随机执行)来执行所有那些适用于每个类的CRUD操作:
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/test-context.xml"})
public abstract class AbstractDAOTest {
@Test
public void test() {
insert();
read();
readAll();
update();
delete();
}
protected abstract void insert();
protected abstract void read();
protected abstract void readAll();
protected abstract void update();
protected abstract void delete();
}
然后我们有Spring的测试配置和样本数据,并在真正的类继承者中实现所有这些方法。
这对我来说仍然不好。 (只有一种实际的测试方法,创建测试环境的时间很长等)。
那么,为DAO层创建集成测试的最明显和最真实的approcah是什么?提前谢谢。