【问题标题】:Test services in MockitoMockito 中的测试服务
【发布时间】:2017-08-18 20:21:40
【问题描述】:

我要测试服务

public class UserServiceTest {

    @Autowired
    private UserServiceImpl userService;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testExistsUsername() {
        User user = userService.findByUsername("jonki97").get();

    }
}

然而,在考试期间他把我扔了出去

java.lang.NullPointerException
at com.service.service.UserServiceTest.testExistsUsername(UserServiceTest.java:32)

我的服务仍然包含存储库

@Service("userService")
public class UserServiceImpl implements UserService {

    private UserRepository userRepository;

    @Autowired
    public UserServiceImpl(UserRepository userRepository) {
        this.userRepository = userRepository;
 }

可能是我遗漏了一些错误,因此抛出了 null。

【问题讨论】:

    标签: java spring spring-mvc spring-boot mockito


    【解决方案1】:

    你没有实例化任何模拟,即使你有这个方法来启动模拟。您需要模拟您在测试类中调用的存储库:

    @Mock
    UserRepository userRepository;
    

    以及提供模拟的行为(调用方法时要做什么)。比如:

    when(userRepository.findByUsername("jonki97")).thenReturn("OK");
    // test the method after
    

    希望对你有帮助

    【讨论】:

    • 不幸的是同一件事zapodaj.net/33a4d1abeab84.png.html
    • 使用 @InjectMocks 将 Mocks 注入到您要测试的类中。另外,在测试类上使用 @RunWIth(MockitoJUnitRunner.class) (或 SpringRunner)注解
    【解决方案2】:

    您是否尝试过使用 Runner

    @RunWith(SpringRunner.class)

    这对我有用:

    @RunWith(SpringRunner.class)
    public class UserServiceTest {
    
        @Mock
        UserRepository userRepository;
    
        @Before 
        public void setup(){
    
            when(userRepository.findByUsername("jonki97")).thenReturn("jonki97");
        }
    
            @Test
            public void testExistsUsername() {
                String user = userRepository.findByUsername("jonki97");
                assertEquals("jonki97", user);
    
            }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多