java - 单元/集成测试由通用方法组成的 dao

标签 java unit-testing generics

以下是方法的示例:

public <T> T save(final T o){
  return (T) sessionFactory.getCurrentSession().save(o);
}

public <T> T get(final Class<T> type, final Long id){
  return (T) sessionFactory.getCurrentSession().get(type, id);
}

public <T> List<T> getFieldLike(final Class<T> type, final String propertyName,
            final String value, final MatchMode matchMode)  {
    final Session session = sessionFactory.getCurrentSession();
    final Criteria crit = session.createCriteria(type);
    crit.add(Restrictions.like(propertyName, value, matchMode));
    return crit.list();
}

关于单元测试或集成测试有什么技巧吗?通过模拟 session 吗?

最佳答案

在单元测试中您唯一可以做的就是模拟 session 和标准并设定期望 - 我已经使用 JMock 在一些情况下完成了此操作,最终不得不为限制编写 Hamcrest 匹配器。除了盲目增加测试覆盖率之外,我不相信它有多大值(value)。

另一方面 - 在这里编写集成测试肯定有用,使用一些数据设置内存数据库并断言方法返回正确的对象

关于java - 单元/集成测试由通用方法组成的 dao,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375914/

相关文章:

java - 在 JUnit : only binds fields in Test class, 中 Autowiring ,不在其他类中 Autowiring

java - 使用 XSLT 格式化 XML 转换的输出以生成文本文件

c# - 如何使用正确的参数测试方法的调用?

java - 如何将方法注入(inject)到java测试类中?

c++ - 数值数组类 : Multiplication using friend functions

java - 我需要 XA 交易吗? DefaultMessageListenerContainer 本地事务与 XA 连接工厂

java - TransformGroup 的正确用法

angularjs - Angular 自动模拟 Controller /服务依赖项

c# - 继承泛型作为函数参数

c# - 将 C# 泛型方法转换为 Objective-C