Java 使用mongodb存储库数据的测试服务存在问题
我正在尝试测试一个具有mongodb存储库的服务。但是,我不知道如何编写使用它的测试,当我尝试从测试类创建条目时,当我从mongodb存储库调用方法时,我不断得到空指针异常。我的存储库类被称为Java 使用mongodb存储库数据的测试服务存在问题,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,我正在尝试测试一个具有mongodb存储库的服务。但是,我不知道如何编写使用它的测试,当我尝试从测试类创建条目时,当我从mongodb存储库调用方法时,我不断得到空指针异常。我的存储库类被称为 TagPreferencesRepository 当我调用 tagPreferencesRepository.deleteAllByTag(tag); 我已使用@Mock声明了TagPreferencesRepository: @Mock TagPreferencesRepositor
TagPreferencesRepository
当我调用
tagPreferencesRepository.deleteAllByTag(tag);
我已使用@Mock
声明了TagPreferencesRepository
:
@Mock TagPreferencesRepository tagPreferencesRepository;
抛出异常的方法是从测试类中的方法内部调用的,该方法在
测试类中的方法在之前用@注释:
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
以及:
您的模拟没有正确初始化。
可能是您没有将模拟注入到要测试的实例中。你有@InjectMock注释吗?
另外,请确保您正在使用jUnit进行注释。我曾经有过类似的经历,因为我使用org.junit.jupiter.api来代替org.junit进行一些注释。
骨架示例:
import org.junit.Before;
import org.junit.Test
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class TestSomeService()
{
@InjectMock
SomeService someService;
@Mock
TagPreferencesRepository tagPreferencesRepository;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void SomeTest(){
TagEnum tag = SomeTag;
// if deleteAllByTag is void
doNothing().when(tagPreferencesRepository).deleteAllByTag(tag);
someResult = someService.someMethod(tag);
// assert something
}
}
将带有@Before注释的方法添加到问题中谢谢。是的,我有@InjectMocks注释引用服务类。
import org.junit.Before;
import org.junit.Test
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class TestSomeService()
{
@InjectMock
SomeService someService;
@Mock
TagPreferencesRepository tagPreferencesRepository;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void SomeTest(){
TagEnum tag = SomeTag;
// if deleteAllByTag is void
doNothing().when(tagPreferencesRepository).deleteAllByTag(tag);
someResult = someService.someMethod(tag);
// assert something
}
}