Java 模拟一个也有自动连线类的自动连线类
我正在为我的班级做Junit测试。我的类的源代码如下:Java 模拟一个也有自动连线类的自动连线类,java,mocking,autowired,Java,Mocking,Autowired,我正在为我的班级做Junit测试。我的类的源代码如下: @Autowired private LanguageRepository languageRepository; @ApiOperation(value = "Languages", notes = "Get Languages.") @CrossOrigin @RequestMapping(method = RequestMethod.GET, path = Constants.REST_LANGUAGES) public List&
@Autowired
private LanguageRepository languageRepository;
@ApiOperation(value = "Languages", notes = "Get Languages.")
@CrossOrigin
@RequestMapping(method = RequestMethod.GET, path = Constants.REST_LANGUAGES)
public List<Language> getLanguages(HttpServletRequest request)
throws GlobalException, ServiceException, SoapException, RepositoryException {
LOG.info("Call Rest method: getLanguages");
List<Language> languages = languageRepository.getAllLanguages();
return languages;
}
@Autowired
私人语言地点语言地点;
@ApiOperation(value=“Languages”,notes=“Get Languages.”)
@交叉起源
@RequestMapping(method=RequestMethod.GET,path=Constants.REST\u语言)
公共列表getLanguages(HttpServletRequest)
抛出GlobalException、ServiceException、SoapException、RepositoryException{
LOG.info(“调用Rest方法:getLanguages”);
List languages=languageRepository.getAllLanguages();
返回语言;
}
LanguageRepository还有一个名为LanguageService的自动连接类
文本的源代码如下:
@Mock
private LanguageRepository languageRepository;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void exampleTest() throws GlobalException, ServiceException, SoapException, RepositoryException {
Language language = new Language("id", "name", "code");
List<Language> languageListGiven = new ArrayList<Language>();
languageListGiven.add(language);
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
Mockito.when(languageRepository.getAllLanguages()).thenReturn(languageListGiven);
// 2- act
LanguageController languageController = new LanguageController();
List<Language> languageListReturned = languageController.getLanguages(request);
// 3- assert
Assert.assertEquals(languageListGiven, languageListReturned);
}
@Mock
私人语言地点语言地点;
@以前
公共void initMocks(){
initMocks(this);
}
@试验
public void exampleTest()引发GlobalException、ServiceException、SoapException、RepositoryException{
语言=新语言(“id”、“名称”、“代码”);
List languageListGiven=new ArrayList();
languageListGiven.add(语言);
HttpServletRequest=Mockito.mock(HttpServletRequest.class);
Mockito.when(languageRepository.getAllLanguages()).thenReturn(languageListGiven);
//2-法案
LanguageController LanguageController=新的LanguageController();
List languageListReturned=languageController.getLanguages(请求);
//3-断言
Assert.assertEquals(languageListGiven,languageListReturned);
}
但是当我调用存储库的方法时,我收到一个nullPointerException
当我执行“Mockito.when”时,可以使用mock来接收我想要在测试中接收的对象
谢谢 您已经为
LanguageRepository
创建了一个模拟,但尚未将其注入控制器。您需要在控制器中为languageRepository
创建一个setter方法,并在测试中使用它
LanguageController LanguageController=newlanguagecontroller();
languageController.setLanguageRepository(languageRepository);
空指针在哪一行?张贴有问题的stacktrace。