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和這個問題的答案中提取信息。
添加回答
舉報