【发布时间】:2022-01-18 23:27:55
【问题描述】:
我有一个关于单元测试的问题。我正在编写测试以检查服务是否正确保存数据(即不重复) 有一个服务类有几个字段,我们对 TypeRepository 字段感兴趣。在保存它的方法中调用并使用 find 方法......在这种情况下,当我运行测试时,我得到 NullPointerException。我不知道在这种情况下有什么帮助。我会很感激你的帮助
服务
@Service
@Slf4j
public class Service {
...
...
final RiskRepo riskRepo;
...
...
private Limit validate(Limit newLimit) {
RiskType.Value typeValue
= riskRepo.findDistinctLimitTypeValueByLimitType(newLimitType);
// ^--- exception
switch (typeValue) { <-- warning can be null
case CONTY: {
...
break;
}
...
}
回购
public interface Repo extends JpaRepository<Limit, Integer> {
@Query("SELECT DISTINCT r.Value from Type r WHERE r.limit=?1")
RiskType.Value findDistinctValueByLimit(String limitType);
}
测试
@Test
public void test_validate() {
Limit newLimit = Limit.builder()
.riskType(...)
......build();
limitService.create(newLimit);
List<Limit> limits = limitRepository.findAllByRiskTypeAndEntityAndLimitTypeAndUnitAndActive(
newLimit.getRiskType(), newLimit.getEntity(), newLimit.getLimitType(),newLimit.getUnit(),newLimit.getActive());
Assert.assertEquals(1, limits.size());
}
【问题讨论】:
-
如果你在做单元测试,那么你需要模拟
RiskRepo。你这样做吗? -
这里的信息太少,无法回答这个问题。哪里抛出异常?完整的测试是什么样的,你的服务是什么样的。所有这些,关键的信息都丢失了。在当前状态下,无法回答问题。
标签: java spring unit-testing mockito