У меня есть абстрактный класс, который содержит некоторые методы, общие для классов, наследующих эти методы. В общем, этот абстрактный класс фильтрует параметры запроса по запросам, после чего они обрабатываются конкретной реализацией. Допустим, абстрактный класс содержит метод, который выглядит следующим образом:
@Test
public void testUserNameBody(){
HashMap parameters = new HashMap();
NativeWebRequest mockRequest = getNativeWebRequest(parameters);
RequestBodyOptions requestBodyOptions = new RequestBodyOptions();
requestBodyOptions.setUserName("user-name");
HandlerAbstract handlerImplementation = new HandlerImplementation();
String userName = handlerImplementation.getUserName(mockRequest, options);
Assertions.assertEquals("user-name", userName);
}
@Test
public void testUserNameRequestParameter(){
HashMap parameters = new HashMap();
parameters.put("username", "user-name");
NativeWebRequest mockRequest = getNativeWebRequest(parameters);
RequestBodyOptions requestBodyOptions = new RequestBodyOptions();
HandlerAbstract handlerImplementation = new HandlerImplementation();
String userName = handlerImplementation.getUserName(mockRequest, options);
Assertions.assertEquals("user-name", userName);
}
@Test
public void testUserName2DifferentValues(){
HashMap parameters = new HashMap();
parameters.put("username", "user-name");
NativeWebRequest mockRequest = getNativeWebRequest(parameters);
RequestBodyOptions requestBodyOptions = new RequestBodyOptions();
requestBodyOptions.setUserName("somethingelse");
try{
HandlerAbstract handlerImplementation = new HandlerImplementation();
String tokenSecret = handlerImplementation.getUserName(mockRequest, options);
Assertions.fail("Should have thrown an exception but did not throw any exception");
}catch (HandlerException e){
Assertions.assertEquals("The username passed in the request body and the request parameters are not the same.", e.getMessage());
}catch (Exception e){
Assertions.fail("Should have thrown a HandlerException but threw: " + e.getMessage());
}
}
@Test
public void testUserNameEqualValues(){
HashMap parameters = new HashMap();
parameters.put("username", "user-name");
NativeWebRequest mockRequest = getNativeWebRequest(parameters);
RequestBodyOptions requestBodyOptions = new RequestBodyOptions();
requestBodyOptions.setUserName("user-name");
HandlerAbstract handlerImplementation = new HandlerImplementation();
String userName = handlerImplementation.getUserName(mockRequest, options);
Assertions.assertEquals("user-name", userName);
}
Когда я запускаю тесты, охватываются все части метода. Если я добавлю к нему журнал или исключение, оно будет выброшено/зарегистрировано. То же самое, если я запущу его с покрытием кода Intelij. Если я запускаю эти тесты с отладкой, все строки покрываются.
Сначала я думал, что это из-за использования макета, но поэтому я создал NativeWebRequest таким образом, но он не решает проблему. :
private NativeWebRequest getNativeWebRequest(HashMap parameters){
MockHttpServletRequest httpRequest = new MockHttpServletRequest();
// Add parameters to the request
parameters.forEach((key, value) -> {
httpRequest.addParameter(key, value);
});
NativeWebRequest nativeWebRequest = new ServletWebRequest(httpRequest);
return nativeWebRequest;
}
Затем я попытался явно установить для параметра запроса значение null в запросе или в параметрах тела запроса, но это также не помогло.
Я создал новую конкретную реализацию абстрактного класса в тесте, так как думал, что, возможно, именно здесь Жакоко запутался, но это не помогло. >
Я дважды проверил, правильно ли настроен мой плагин Surefire и это. Тесты, которые я хочу использовать для улучшения тестового покрытия, выполняются (https://stackoverflow.com/a/67220369/12171869).
Я работаю над многомодульным проектом с модуль для интеграционных тестов. Я исключил покрытие интеграционного теста из создания отчета jacoco, полагая, что проблема связана с созданием агрегированного отчета. Однако метод остается не полностью раскрытым.
У меня есть абстрактный класс, который содержит некоторые методы, общие для классов, наследующих эти методы. В общем, этот абстрактный класс фильтрует параметры запроса по запросам, после чего они обрабатываются конкретной реализацией. Допустим, абстрактный класс содержит метод, который выглядит следующим образом: [code]public class HandlerAbstract {
RequestBodyOptions requestBodyOptions = new RequestBodyOptions(); requestBodyOptions.setUserName("somethingelse");
try{ HandlerAbstract handlerImplementation = new HandlerImplementation(); String tokenSecret = handlerImplementation.getUserName(mockRequest, options); Assertions.fail("Should have thrown an exception but did not throw any exception"); }catch (HandlerException e){ Assertions.assertEquals("The username passed in the request body and the request parameters are not the same.", e.getMessage()); }catch (Exception e){ Assertions.fail("Should have thrown a HandlerException but threw: " + e.getMessage()); } }
@Test public void testUserNameEqualValues(){ HashMap parameters = new HashMap(); parameters.put("username", "user-name");
Assertions.assertEquals("user-name", userName); } [/code] Когда я запускаю тесты, охватываются все части метода. Если я добавлю к нему журнал или исключение, оно будет выброшено/зарегистрировано. То же самое, если я запущу его с покрытием кода Intelij. Если я запускаю эти тесты с отладкой, все строки покрываются. Сначала я думал, что это из-за использования макета, но поэтому я создал NativeWebRequest таким образом, но он не решает проблему. : [code] private NativeWebRequest getNativeWebRequest(HashMap parameters){ MockHttpServletRequest httpRequest = new MockHttpServletRequest();
// Add parameters to the request parameters.forEach((key, value) -> { httpRequest.addParameter(key, value); });
NativeWebRequest nativeWebRequest = new ServletWebRequest(httpRequest);
return nativeWebRequest; } [/code] [list] [*]Затем я попытался явно установить для параметра запроса значение null в запросе или в параметрах тела запроса, но это также не помогло. [*]Я создал новую конкретную реализацию абстрактного класса в тесте, так как думал, что, возможно, именно здесь Жакоко запутался, но это не помогло. > [*]Я дважды проверил, правильно ли настроен мой плагин Surefire и это. Тесты, которые я хочу использовать для улучшения тестового покрытия, выполняются (https://stackoverflow.com/a/67220369/12171869). [*]Я работаю над многомодульным проектом с модуль для интеграционных тестов. Я исключил покрытие интеграционного теста из создания отчета jacoco, полагая, что проблема связана с созданием агрегированного отчета. Однако метод остается не полностью раскрытым. [/list]
У меня есть абстрактный класс, который содержит некоторые методы, общие для классов, наследующих эти методы. В общем, этот абстрактный класс фильтрует параметры запроса по запросам, после чего они обрабатываются конкретной реализацией. Допустим,...
Я использовал платформу Unittest для создания тестового примера для файла Notebook, который содержит функции, связанные с приложением.
введите здесь описание изображения
Функция на изображении выше используется для выполнения класса Unittest,...
Мой проект — веб-сервис Java, Spring Boot, Maven.
Я запускаю контекст приложения Spring и провожу интеграционные тесты для конечных точек REST API. И я хочу видеть отчет с покрытием интеграционных тестов, например:
Список конечных точек (4):...
Интересно, могу ли я инициализировать последнее поле в абстрактном базовом классе результатом абстрактного метода, который будет реализован производным классом. Я понимаю, что производный ctor сначала вызовет базовый ctor, поэтому я гарантирую, что...
Я пытаюсь обновить свое приложение с помощью JDK21 с gradle 8.6, я столкнулся с проблемой ниже
Не удалось найти метод getReportsDir() для аргументов [] в расширении типа «jacoco» org.gradle.testing.jacoco.plugins.JacocoPluginExtension.
может ли...