это обновление к моему предыдущему вопросу. У меня есть класс Utility, который я уже смог покрыть своим модульным тестом, за исключением случаев, когда условие возвращает false.
Вот мой класс:
@Component
public class Utils {
@Autowired
private ObjectMapper mapper = new ObjectMapper();
@Autowired
private LoggingService loggingService;
public <E> String mapToJsonString(E object) {
try {
if (object == null) {
throw new IOException(ErrorMessage.ERROR_PROCESSING_JSON_NULL);
}else {
return mapper.enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(object); //NullPointer Here
}
} catch (IOException e) {
loggingService.logError(this.getClass().getName(), "1", ErrorMessage.ERROR_MAPPING_TO_JSONSTRING, e);
return "";
}
}
}
, а вот мой модульный тест
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = ATMMonitoringApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
public class ObjectToJsonStringTest {
@SpyBean
private ATM atm;
@Autowired
private Utils utils;
@MockBean
private ObjectMapper mapper;
@MockBean
private LoggingService loggingService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
myModelClass = new MyModelclass();
myModelClass.setStatus("U");
myModelClass.setTermCode("001");
myModelClass.setLocation("BGC");
}
@Test
public void testObjectToJson() throws JsonProcessingException {
String output = utils.mapToJsonStringmyModelClass
assertNotNull(output);
}
@Test
public void testObjectToJsonNull() throws JsonProcessingException {
String output = utils.mapToJsonString(null);
assertNull(output);
}
@Test
public void testJsonParsingException() {
myModelClass = new MyModelclass();
myModelClass = null;
String output = utils.mapToJsonString(myModelClass);
Mockito.when(loggingService.logError(this.getClass().getName(), "1", ErrorMessage.ERROR_MAPPING_TO_JSONSTRING, new Exception()))
.thenReturn("");
assertThat(output).isEmpty();
}
}
Трассировка стека говорит, что у меня нулевой указатель на эту строку кода:
return mapper.enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(object);
Пожалуйста, помогите мне в этом. Спасибо