java - 使用 hibernate 和注释的单元测试服务层,没有 DAO

标签 java hibernate spring unit-testing integration-testing

单元测试/集成测试以下内容的最佳方法是什么:

@Service("fooService")
public class FooService {

  @Resource(name = "sessionFactory")
  private SessionFactory sessionFactory;

  /*** Get all **/
  @Transactional(readOnly = true)
  public List<Foo> getAllFoos() {
    final Session session = sessionFactory.getCurrentSession();
    final Criteria crit = session.createCriteria(Foo.class);
    return crit.list();
  }
}

我很高兴使用mockito,但不确定如何利用它的实用性。我见过的大多数情况都需要将 dao/mock dao 作为方法参数传入。

显然我会推断出更复杂的方法。

最佳答案

这个类是 DAO,从模拟 Session 等中没有太多好处,除非你有很多逻辑在里面 - 如果你这样做,那么最好将其放置在实际的服务类或模型本身上。

考虑一下您要在这里测试什么:这些方法是否从数据库返回它们应该返回的内容。我会针对内存数据库运行集成测试。

关于java - 使用 hibernate 和注释的单元测试服务层,没有 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263681/

相关文章:

java - 将 Twirl 与 Spring MVC 结合使用

java - 可以将持久类作为 DTO 中的字段吗?

java - 如何在单个 Controller 中制作多个@PatchMapping?

java - 尝试通过 SSL 连接到服务器的 SSLHandshakeException

java - 带有json的Spring rest junit帖子

java : convert long to Timestamp

java.io.NotSerializableException : java. util.HashMap$值

java - HashingFunction 与 Arrays.hashCode 兼容

java - 如何在 JPA 中获取外键引用以具有 "ON UPDATE CASCADE ON DELETE CASCADE"功能?

java - Spring-MVC、 hibernate : Creating DTO objects from Domain objects