我有我的ServiveImpl类,它有创建和删除从AEM到Solr的索引的公共方法。我们如何使用Mockito处理这些void方法的Junit?任何指针都将是有帮助的。主要用于测试与Solr的集成
qltillow1#
在这种情况下,除了提供一些测试覆盖率之外,JUnit不会有任何实质性的影响。编写Junit的原因是为了确保方法返回一个结果,或者抛出一个异常。对于void方法,唯一可以测试的是方法的执行。要解决这个问题,最好至少返回一个布尔值,否则,您永远无法确定索引是否真的被删除了。所以建议是-1.请更新方法,以确保发生正确的错误行程。1.根据方法的执行情况,至少返回一个布尔值。这不会对您的项目产生任何影响,因为该方法是void,不会影响任何调用。1.在您的Junit中,Assert返回值为true或false,或者只使用assertTrue方法。
void
true
false
assertTrue
boolean deleteIndex(String indexName) { if (deleted) { return true; } else { return false; } }
J单元-
@InjectMocks private ServiveImpl service = new ServiveImpl(); @Test public void testIndexDeletion() { boolean indexDeleted = ServiveImpl.deleteIndex("someIndex"); assertTrue(indexDeleted); }
1条答案
按热度按时间qltillow1#
在这种情况下,除了提供一些测试覆盖率之外,JUnit不会有任何实质性的影响。
编写Junit的原因是为了确保方法返回一个结果,或者抛出一个异常。对于void方法,唯一可以测试的是方法的执行。
要解决这个问题,最好至少返回一个布尔值,否则,您永远无法确定索引是否真的被删除了。
所以建议是-
1.请更新方法,以确保发生正确的错误行程。
1.根据方法的执行情况,至少返回一个布尔值。这不会对您的项目产生任何影响,因为该方法是
void
,不会影响任何调用。1.在您的Junit中,Assert返回值为
true
或false
,或者只使用assertTrue
方法。J单元-