[英]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.