【发布时间】:2017-04-19 08:46:50
【问题描述】:
我正在使用 Spring Boot,我正在尝试创建一个测试。
其实我的测试课:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class MemberServiceImplTest {
@InjectMocks
MemberServiceImpl memberService;
@Mock
MemberRepository memberRepository;
@Mock
Member member;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void getMemberId() {
Long memberId = 1l;
Member member = new Member();
...
Mockito.when(memberRepository.findOne(memberId)).thenReturn(member);
MemberDto memberDto = memberService.getMemberById(memberId);
...
}
在我的memberService 类和getMemberById 方法中,我调用了memberRepository 类的findOne 方法。如果未找到成员,则会引发 ResourceNotFoundException 异常。
我不明白为什么会出现此错误。 我没有使用正确的注释吗?
【问题讨论】:
-
我知道这样的问题很难解决,但是您认为有什么方法可以从您的问题中创建一个最小、完整且可验证的示例 (stackoverflow.com/help/mcve)?那真的很有帮助。
-
对于初学者来说,你的测试代码与 Spring 完全没有关系,所以你可以删除所有的类级别的注解:如果你只是使用 Mockito 来模拟所有的,就不需要启动 Spring Boot你的组件。
-
或者您可能打算使用 Spring Boot Test 1.4 中的
@MockBean... 这是完全不同的事情。
标签: java spring-boot mockito spring-test