【发布时间】:2017-09-26 13:59:12
【问题描述】:
我有以下代码:
try {
em.persist(myObject);
em.flush();
}
catch (Exception e) {
System.out.println("An Exception occur when trying to persist and flush");
}
在测试中,我用 Mockito 模拟了我的 EntityManager:
@Mock
EntityManager mockEm;
但由于 persist 和 flush 是 void 方法,我无法编写如下内容:
when(mockEm.persist(anObject).then(doSomeThing);
我如何编写单元测试(使用 JUnit)来模拟 em.persist 和 em.flush,以便在有无例外的情况下测试这两种情况? 谢谢。
【问题讨论】:
-
这个答案不能简单回答。您究竟想测试什么 - 内部
persist() / flush()会发生什么 - 还是您只想验证这两个方法是否在em对象上调用? -
我想测试持久化或刷新何时返回 EntityExistException 或 PersistenceException 等异常。在这种情况下,我的代码将捕获异常,我想测试该代码是否真正捕获并执行相应的代码。
-
那么你可能想要mock那个 em 对象并让它在调用这些方法时抛出一个异常。
-
是的。我能做什么?
-
首先您要更新您的问题以在此处添加该信息。 认真更新您的问题。而不是在 cmets 中给出随机响应并忽略您已经收到的反馈。
标签: java unit-testing persistence