JUnit тестирование (положительное и отрицательное тестирование)
Это код, который я написал для JUnit Testing для положительного и отрицательного тестирования.
@Test
public void getMaintenenceIntervalsByMetadataOKTest() throws Exception {
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.set("vinModelYear", "2016");
params.set("vinModelCode", "1633F6");
params.set("vinEngineCode", "CZTA");
params.set("interval", "100000");
params.set("vinTransmissionCode", "");
params.set("importerNumber", "");
params.set("makeCode", "V");
params.set("descriptionText", "");
params.set("languageCode", "en-US");
params.set("dealerCode", "408083");
mvc.perform(get("/upg-admin-controller/maintenence-intervals-by-metadata")
.contentType(MediaType.APPLICATION_JSON)
.params(params))
.andExpect(status().isAccepted());
}
@Test
public void getMaintenenceIntervalsByMetadata400Test()
throws Exception {
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.set("vinModelYear", "2000");
params.set("vinModelCode", "8727R9");
params.set("vinEngineCode", "GTAV");
params.set("interval", "100000");
params.set("vinTransmissionCode", "");
params.set("importerNumber", "");
params.set("makeCode", "T");
params.set("descriptionText", "");
params.set("languageCode", "sp-MX");
params.set("dealerCode", "120021");
mvc.perform(get("/upg-admin-controller/maintenence-intervals-by-metadata")
.contentType(MediaType.APPLICATION_JSON)
.params(params))
.andExpect(status().isBadRequest());
}
Ошибка:
Ошибка: java.lang.AssertionError: Ожидаемый статус:<202>, но был:<400>.
Я пытался это исправить, но не могу найти решение. Использование расширения EclEmma в Eclipse. (извините, если код не в строке. Текстовое поле маленькое, оно разбивает одну строку кода на две строки.)
Также это код контроллера, с которым я работаю, который имеет QueryParams.
@RequestMapping(value = "/maintenence-intervals-by-metadata", method = RequestMethod.GET)
public ResponseEntity<List<AdminMaintenanceIntervalReponse>> findMaintenenceIntervalsByMetadata( @QueryParam("modelYear") String modelYear,
@QueryParam("modelCode") String modelCode, @QueryParam("engineCode") String engineCode, @QueryParam("interval") String interval ,
@QueryParam("transmissionCode") String transmissionCode , @QueryParam("importer") String importer, @QueryParam("make") String make,
@QueryParam("descriptionText") String descriptionText, @QueryParam("languageCode") String languageCode, @QueryParam("dealerCode") String dealerCode, @QueryParam("brand") String Brand) throws MPMSException {
LOGGER.log(Level.INFO, "Entered UPGAdminServiceController, getAllMaintenenceIntervalsByMetadata");
LOGGER.log(Level.INFO, "modelYear =" + modelYear +" modelCode = " + modelCode +" engineCode = " + engineCode +" interval = " + interval + "transmissionCode = " + transmissionCode + "importer = " + importer + "make = " + make + "descriptionText = " + descriptionText);
List<AdminMaintenanceIntervalReponse> allMaintenanceIntervalsList = new ArrayList<AdminMaintenanceIntervalReponse>();
try{
Integer modelYearParam = null;
if (modelYear!=null){
modelYearParam = Integer.parseInt(modelYear);
}
Integer intervalParam = null;
if (interval!=null){
intervalParam = Integer.parseInt(interval);
}
String modelCodeParam = null;
if (modelCode!=null){
modelCodeParam = String.valueOf(modelCode);
}
String engineCodeParam = null;
if (engineCode!=null){
engineCodeParam = String.valueOf(engineCode);
}
String transmissionCodeParam = null;
if (transmissionCode!=null){
transmissionCodeParam = String.valueOf(transmissionCode);
}
Integer importerParam = null;
if (importer!=null){
importerParam = Integer.parseInt(importer);
}
String makeParam = null;
if (make!=null){
makeParam = String.valueOf(make);
}
if (descriptionText!=null){
String.valueOf(descriptionText);
}
allMaintenanceIntervalsList = upgAdminMaintenanceCalcService.findMaintenanceIntervalsByMetadata(modelYearParam, modelCodeParam, engineCodeParam, intervalParam, transmissionCodeParam, importerParam, makeParam, descriptionText, languageCode, dealerCode);
} catch(MPMSException e){
throw e;
} catch (Exception e) {
throw new MPMSException(ErrorConstants.UNKNOWN.getErrorCode(), "No Data Available", ErrorConstants.UNKNOWN.toString(), e);
}
return new ResponseEntity<List<AdminMaintenanceIntervalReponse>>(allMaintenanceIntervalsList, HttpStatus.OK);
}
Может кто-нибудь, пожалуйста, помогите мне исправить эту проблему.
1 ответ
Ваш /maintenence-intervals-by-metadata
Конечная точка имеет следующие параметры запроса:
- @QueryParam ("modelYear")
- @QueryParam ("modelCode")
- @QueryParam ("engineCode")
- @QueryParam ("интервал")
- @QueryParam ("transmissionCode")
- @QueryParam ("импортер")
- @QueryParam ("делать")
- @QueryParam ("descriptionText")
- @QueryParam ("LanguageCode")
- @QueryParam ("dealerCode")
- @QueryParam ("бренд")
Но ваш тест отправляет запрос [GET] /maintenence-intervals-by-metadata
со следующими именованными параметрами:
- params.set ("vinModelYear", "2016");
- params.set ("vinModelCode", "1633F6");
- params.set ("vinEngineCode", "CZTA");
- params.set ("интервал", "100000");
- params.set ("vinTransmissionCode", "");
- params.set ("importerNumber", "");
- params.set ("makeCode", "V");
- params.set ("descriptionText", "");
- params.set ("languageCode", "en-US");
- params.set ("dealerCode", "408083");
Таким образом, предоставленные вами параметры запроса не соответствуют параметрам запроса, ожидаемым /maintenence-intervals-by-metadata
конечная точка. Есть несоответствия имен:
- модель года против vinModelYear
- modelCode vs. vinModelCode
- ... так далее
И хотя бы один параметр запроса не указан: конечная точка объявляет @QueryParam("brand")
но вы не предоставляете параметр с именем "brand"
,
Я подозреваю, что сообщение, связанное с ошибкой 400, может содержать что-то вроде: Required String parameter '...' is not present
,
Если вы измените свой вызов так, что каждый из параметров запроса, определенных /maintenence-intervals-by-metadata
конечная точка имеет заданное значение параметра правильного типа (String
) тогда думаю 400 больше не будет происходить.