我有 Spring 课说
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
class MainServiceImpl implements MainService {
private final InternalService internalService;
public Set<String> do(String anything) {
Set<String> relevent = internalService.finaIntern(anything);
return relevent;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在编写单元测试用例如下
@RunWith(MockitoJUnitRunner.class)
class TestMainServiceImpl {
@InjectMocks
private MainServiceImpl service;
@Mock
InternalService internalService;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void testDo() {
Set<String> setData = new HashSet<>();
setData.add("ABC");
String a ="a";
when(internalService.finaIntern(any(String.class))
.thenReturn(setData);
Set<String> result = service.do(a);
assertTrue(!result.isEmpty());
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我的测试用例失败,但如果我删除的最终形式MainServiceImpl,做一个明确的@Autowired像下面
@Component
class MainServiceImpl implements MainService …Run Code Online (Sandbox Code Playgroud)