Java 使用mongodb存储库数据的测试服务存在问题

Java 使用mongodb存储库数据的测试服务存在问题,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,我正在尝试测试一个具有mongodb存储库的服务。但是,我不知道如何编写使用它的测试,当我尝试从测试类创建条目时,当我从mongodb存储库调用方法时,我不断得到空指针异常。我的存储库类被称为 TagPreferencesRepository 当我调用 tagPreferencesRepository.deleteAllByTag(tag); 我已使用@Mock声明了TagPreferencesRepository: @Mock TagPreferencesRepositor

我正在尝试测试一个具有mongodb存储库的服务。但是,我不知道如何编写使用它的测试,当我尝试从测试类创建条目时,当我从mongodb存储库调用方法时,我不断得到空指针异常。我的存储库类被称为

        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
   }
}