[英]NullPointerException when running Service Test with Mockito
这是我的测试 class,我在其中创建了MockBean
,并将其注入服务 object:
@ExtendWith(MockitoExtension.class)
@ExtendWith(SpringExtension.class)
public class CategoryServiceTest {
@MockBean
private CategoryRepository categoryRepository;
@InjectMocks
private CategoryServiceImpl categoryService;
@Test
public void testCheckUniqueInNewModeReturnDuplicateName() {
Long categoryId = null;
String name = "Computers";
String alias = "abc";
Category category = new Category(categoryId, name, alias);
Mockito.when(categoryRepository.findByName(name)).thenReturn(category);
String result = categoryService.checkUnique(categoryId, name, alias);
assertThat(result).isEqualTo("DuplicateName");
}
}
当我尝试运行此测试时,出现 NullPointerException:
java.lang.NullPointerException: Cannot invoke "com.marketcruiser.admin.category.CategoryRepository.findByName(String)" because "this.categoryRepository" is null
at com.marketcruiser.admin.category.CategoryServiceImpl.checkUnique(CategoryServiceImpl.java:136)
这是我的服务 class,方法是checkUnique
:
@Service
public class CategoryServiceImpl implements CategoryService{
private final CategoryRepository categoryRepository;
@Autowired
public CategoryServiceImpl(CategoryRepository categoryRepository) {
this.categoryRepository = categoryRepository;
}
@Override
public String checkUnique(Long categoryId, String name, String alias) {
boolean isCreatingNew = (categoryId == null || categoryId == 0);
Category categoryByName = categoryRepository.findByName(name);
if (isCreatingNew) {
if (categoryByName != null) {
return "DuplicateName";
}
}
return "OK";
}
}
有人注意到错误是什么吗?
您正在混合两个不兼容的框架:Spring 和 Mockito。选择其中一个,但不能同时选择两个。 这是仅使用 Mockito 的测试:
@ExtendWith(MockitoExtension.class)
public class CategoryServiceTest {
@Mock
private CategoryRepository categoryRepository;
@InjectMocks
private Cate
请注意只有一个扩展名和@Mock
而不是@MockBean
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.