Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向注入的类成员提供模拟实例_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 如何向注入的类成员提供模拟实例

Java 如何向注入的类成员提供模拟实例,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我正在使用JUnit4和mockito创建单元测试。我在尝试为一个类成员提供模拟实例时遇到了一个问题 下面是要测试的类: public class FeedbackServlet extends SlingAllMethodsServlet { @Reference private ConfigService configService; @Override protected void doPost(SlingHttpServletRequest request, Sling

我正在使用JUnit4和mockito创建单元测试。我在尝试为一个类成员提供模拟实例时遇到了一个问题

下面是要测试的类:

public class FeedbackServlet extends SlingAllMethodsServlet {
  @Reference
  private ConfigService configService;

  @Override
  protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
    FeedbackData feedbackData = extractFeedbackData(request.getRequestParameterMap());

    try {
      boolean isEmailSent = configService.send(feedbackData);
    } catch (Exception e) {
      ...
    }
  }

  private FeedbackData extractFeedbackData(RequestParameterMap data) {
    String firstName = data.getValue(ParamKey.FIRST_NAME.toString()).getString();
    String email = data.getValue(ParamKey.EMAIL.toString()).getString();
    String message = data.getValue(ParamKey.MESSAGE.toString()).getString();
    String contactNumber = data.getValue(ParamKey.CONTACT_NUMBER.toString()).getString();

    return new FeedbackData(firstName, email, message, contactNumber);
  }
}
当我尝试使用configService.sendfeedbackData时,测试会生成NullPointerException。现在我尝试在测试类中注入缺少的值:

public class FeedbackServletTest extends Mockito {
  @InjectMocks
  private ConfigService configService = mock(ConfigService.class);

  @Test
  public void testDoPost() throws Exception {
    ...
    when(configService.send(new FeedbackData("Nikola", "nikola.tesla@genius.co", "Our virtues and our failings are inseparable, like force and matter." +
            "When they separate, man is no more.", "09991234567"))).thenCallRealMethod();
    ...
  }
}
我试图重新运行测试,但NPE仍然存在


如何正确执行此操作?

@InjectMocks注释应放置在要测试的对象实例上

@Mock
ConfigService mockedConfigService;

@InjectMocks
FeedbackServlet tested = new FeedbackServlet();