Так вот мой код:Initialize autowired объектов в блоке TestNG тесты
@Service("MyCode")
public class CodeImpl implements CodeI {
@Autowired
private CodeMapper codeMapper;
@Autowired
private CodeAppService codeAppService;
@Override
public CodePOJO getCode(String myId) {
CodeDTO codeDTO = codeAppService.getOne(myId);
return codeMapper.mapCode(codeDTO);
}
}
И это модульный тест, что я написал:
public class CodeImplTest {
@Tested(fullyInitialized = true)
CodeImpl codeImpl;
@Injectable
CodeAppService mockedCodeAppService;
@Injectable
CodeMapper mockedCodeMapper;
@BeforeMethod
public void setup_mocks() {
codeImpl = new CodeImpl();
}
@Test
public void testGetCode() throws Exception {
final CodeDTO codeDTO = new codeDTO();
codeDTO.setName("my name")
new NonStrictExpectations() {{
mockedCodeAppService.getOne(anyString);
result = codeDTO;
}};
CodePOJO returnedCodePOJO = codeImpl.getCode("1");
assertThat(returnedCodePOJO, is(instanceOf(CodePOJO.class)));
assertThat(returnedCodePOJO.getName(), is("my name"));
}
}
я получаю это следующее неинициализированное исключение:
java.lang.AssertionError:
Expected: is "my name"
but: was null
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at com.dev.impl.CodeImplTest.testGetCode(CodeImplTest.java:74)
Я попытался найти его на форуме, но не могу ответить на него.
Любая помощь будет оценена по достоинству.
Спасибо.
Попробуйте документацию API для '@ Tested', у него есть ответ. –
Можете ли вы уточнить, пожалуйста? Я пробовал читать столько сообщений и документов, и все же это не работает для меня. Либо я попал в NPE, либо выше исключения. –
Более конкретно, см. Второе предложение второго абзаца в документации по API для '@ Tested':« По умолчанию автоматическое создание происходит непосредственно перед тем, как выполняется тестовый метод, если проверенное поле остается нулевым в такое время; .. . ". –