Java集成测试(DAO层,通用CRUD操作)

时间:2017-03-07 09:16:59

标签: spring hibernate testing junit

我一直在寻找一种精确的方法来为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是什么?提前谢谢。

0 个答案:

没有答案