3 回答
TA贡献1864条经验 获得超2个赞
首先,你不需要在SpringRunner这里使用。替换@RunWith(SpringRunner.class)为@RunWith(MockitoJUnitRunner.class)
其次,如果还是出现这个问题,尝试使用next(假设RequestHandlerImpl是RequestHandler的实现):
@InjectMocks RequestHandler request = new RequestHandlerImpl();
甚至@InjectMocks RequestHandlerImpl request
TA贡献2011条经验 获得超2个赞
好的,所以在查看了这个之后,我看到有很多 bean 正在被 Autowired。所以我需要为我所依赖的类添加上下文配置。然后我可以使用 Mock 和 Inject Mock 的注释。所以我的夹具变成了这样:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {RequestHandler.class, ResponseHandler.class,
DataCache.class, Service.class})
public class RequestHandlerTest {
@Mock private ResponseHandler response;
@Mock private Service serv;
@InjectMocks
@Resource
private RequestHandler request;
public void setUp() {
MockitoAnnotations.initMocks(this);
// Add mock data logic using doAnswer or doNothing for void methods if needed
// and adding when().then() for mocking return values for other functions
}
@Test
public void makeRequest() {
assertTrue(request.sendRequest(Object message));
}
}
从Mocking Void Methods with Mockito和这个问题的答案中提取信息。
添加回答
举报
