powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Junit тестирование простейшего контроллера
25 сообщений из 502, страница 1 из 21
Junit тестирование простейшего контроллера
    #39870968
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дан простейший контроллер-который вытягивает из репозитория все вопросы
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Autowired
    QuestionService questionService;

@PostMapping("/addanswer")
    public ModelAndView editAnswer( ){
        ModelAndView model=new ModelAndView();
        List<Question> q=questionService.findAll();
        model.addObject("answer",q);
        return model;
    }



вот тест
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
@ExtendWith(MockitoExtension.class)
public class addAnswerControllerTest {

    @Mock
    private QuestionService questionService;


    @InjectMocks
    private addAnswerController addAnswerController;

   private List<Question>listQ= Arrays.asList(new Question("test1"),new Question("test2"));


    @BeforeEach
     public void setUp(){
       when(questionService.findAll()).thenReturn(listQ);

    }
    @Test
   public void sss(){
        ModelAndView mv=addAnswerController.editAnswer();
       assertThat(mv.getModel()).extracting("answer").contains(listQ);
    }

}




казалось бы куда уже проще

берем сервис -делаем из него мок,инжектим в контроллер
переопределяем метод репозитория
все вроде по учебнику

но нет

вот эта строчка дает nullpointer

Код: java
1.
ModelAndView mv=addAnswerController.editAnswer();
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870971
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Ты научился делать тред на одну тему? Так держать!
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870976
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, имя класса не по конвенции.

Должно быть с большой буквы. Иначе конвенции по именам бинов не соблюдаются.
К каким последствиям это приводит - мне лень рассуждать. Я не знаю. Но я-бы просто пофиксил
для начала.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870978
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,эту тему сейчас все равно засрут,а по теме никто не ответит))
хочется очень чтобы тест заработал)
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870982
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

когда срут - ты нажимаешь кнопку - сообщить модератору и тот - если согласен - чистит флуд и излишнюю фамильярность.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870986
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonasv79, имя класса не по конвенции.

Должно быть с большой буквы. Иначе конвенции по именам бинов не соблюдаются.
К каким последствиям это приводит - мне лень рассуждать. Я не знаю. Но я-бы просто пофиксил
для начала.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
java.lang.NullPointerException
	at com.alekseev.Javatesting.addAnswerControllerTest.sss(addAnswerControllerTest.java:40)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)



переделал-ошибка все таже все в той же сточке кода

Код: java
1.
ModelAndView mv=addAnswerController.editAnswer();
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870987
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

ты уже успел вчера вечером чела обидеть - не надо продолжать грубить
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39870998
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79, кидай ссылку на бранч.

Просто людям и мне лень собирать новый проект под такой пустяк.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871000
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
все пофиксил наконец то)

во первых не хватало анатоции

@RunWith(MockitoJUnitRunner.class)
без нее тест видимо не запускался

во вторых почему то неправильно инициализировался список
в третьих неправильно выбрал сущность

мокито берет обьект и все его поля по умолчанию делает null или 0

вообщем для спортивного интереса все переделал

и наконец то получил зеленый тест
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871008
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79PetroNotC Sharp,эту тему сейчас все равно засрут,а по теме никто не ответит))
хочется очень чтобы тест заработал)заведение темы это забота о Других, а не твои удобства.
Нет логики))
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871182
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для тестов предлагаю использовать Spock фреймворк, с ним все намного проще

https://habr.com/ru/post/137561/
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871191
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой дня, Spock/Groovy/Gradle - это то что еще предстоит ему учить. Скорее всего одновременно.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871206
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой днядля тестов предлагаю использовать Spock фреймворк, с ним все намного проще

https://habr.com/ru/post/137561/
у нас конкертные требования к фреймворкам,мы не решаем тут ничего))
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871214
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят сейчас пишу интерграциионый тест

вопрос такой у меня база на проде psql
сооотвественно мне нужна emded база

я хочу взять
otj-pg-embedded

но я не могу найти пример как ее использовать

например что написать в application property
как ее использовать в тестах самих?

например в монго все просто

в тесте пишем вместо своего репозитория создаем экзмпляр класса mongotemplate, с которым я далее могу работать как со своим репозиторием

и создать апликейшн проперти в папке тест,где указать коректный хост для базы 127.01.01.1


как настроить otj-pg-embedded я нигде не нашел

может для нее ничего надо ?
тогда как мне создать ембдед репозиторий ?
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871218
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://github.com/opentable/otj-pg-embedded/blob/master/.no-otj-spring
судя по этой ссылке ,в которой пусто возможность интреграции со спринг отсутвует


а если я буду в качестве емдед базы использовать монго ?
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79а если я буду в качестве емдед базы использовать монго ?
Монго это нереляционна БД. Считается документо-ориентированной. И 99% функционала реляционок с ней просто
не будут работать.

Играя с современными мапперами типа SpringData можно добиться похожего функционала но это совсем другая
архитектурная натяжка и ее надо принимать на самом верхнем уровне команды. Тоесть ты сам не вправе решить
что Монго вдруг (!) внезапно будет заменой Postgresql.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871234
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79ребят сейчас пишу интерграциионый тест

вопрос такой у меня база на проде psql
сооотвественно мне нужна emded база

я хочу взять
otj-pg-embedded

В качестве embed обычно используют H2, HSQL, Derby. Они написаны на чистой Java и поддерживают
разные диалекты SQL. Какие именно диалекты - я не понмю. Надо смотреть документацияю. По синтаксису
возможны отличия от стандартного Ansi-92. Считаются реляционками. Достаточно надежны и проверены временем.

otj-pg-embedded я не знаю. Обычно начинаю изучение с зависимостей. Что продукт использует - тем он и является.

Курим тут https://github.com/opentable/otj-pg-embedded/blob/master/pom.xml
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871283
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ качестве embed обычно используют H2, HSQL, Derby. Они написаны на чистой Java и поддерживают
разные диалекты SQL. Какие именно диалекты - я не понмю. Надо смотреть документацияю. По синтаксису
возможны отличия от стандартного Ansi-92. Считаются реляционками. Достаточно надежны и проверены временем.

otj-pg-embedded я не знаю. Обычно начинаю изучение с зависимостей. Что продукт использует - тем он и является.
Курим тут https://github.com/opentable/otj-pg-embedded/blob/master/pom.xml

неее
это все не то

вот нашел кастомную библиотеку,вроде как не нужны бубны с ней

просто ставишь анотацию на тест нужную и все само собой должно замутиться)
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871302
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и барахтайся с ней сам.
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871326
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,

у коллег спросить, как принято писать интеграционные тесты и что использовать, стесняешься что-ли?
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871404
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAasv79,

у коллег спросить, как принято писать интеграционные тесты и что использовать, стесняешься что-ли?
у нас команда еще не собрана вместе)не у кого спрашивать.Допуски оформляют.

да я вроде нагуглил ,этот эмбдед метод уже устарел
щас тестируют @JPADATATEST

я так понял тестирование происходи в пределах одной транзакции
создается где то в памяти рандомно бд и потом при завершении теста удаляется

не успел посмотреть это чудо ,но вроде логично что в 2019 году будет достаточно поставить анотации,а не лазить по гуглу ища какие то кастомные библиотеки ,пытаясь все это подружить
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871501
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чо то не получается нихера
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871502
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
@RunWith(SpringJUnit4ClassRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class addAnswerControllerTest {
    TestRestTemplate restTemplate=new TestRestTemplate();
    @Autowired
    private QuestionRepo questionRepo;


    @Before
    public void before(){
        Question question=new Question();
        question.setText("AAA");
        questionRepo.save(question);
    }
    
    @Test
    public void EditAnswer() {
       ResponseEntity<List<Question>> responseEntity= restTemplate.exchange("http://localhost:8080/fa", HttpMethod.GET, null, new ParameterizedTypeReference<List<Question>>() {
        });
       List<Question> list=responseEntity.getBody();
       assertThat(list.size(),is(1));

    }
}



вот сам тест

явно чего то не хватает -странно -ведь должно происходить следущее
должна создаваться рандомна база,туда сейвиться запись
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871504
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jdbc-drivers версии от 4.0 требуют включения в список dependencies которые будут видны в скомпилированом коде.

Более жлобские до 4.0 требовали мануальной прогрузки драйвера через Class.forName(...) или DriverManager.register(...)
...
Рейтинг: 0 / 0
Junit тестирование простейшего контроллера
    #39871512
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonJdbc-drivers версии от 4.0 требуют включения в список dependencies которые будут видны в скомпилированом коде.

Более жлобские до 4.0 требовали мануальной прогрузки драйвера через Class.forName(...) или DriverManager.register(...)

сейчас я нашел другой туториал
https://hellokoding.com/spring-boot-test-data-layer-example-with-datajpatest/

делаю один в один все как в нем
,хорошо у меня сервер был вырублен
так вот что я нашел в логе

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Hibernate: alter table user_quest drop constraint FKm1qm44n06js0fj5m29ek4kayv
Hibernate: alter table user_quest drop constraint FKb5owhjxbj8u2r10eqtvusyong
Hibernate: alter table usr_answer drop constraint FK9rl12nos651kelu5r20dw9ney
Hibernate: alter table usr_answer drop constraint FKlmsuvddkn5nqdu1r1yoo6a3xy
Hibernate: drop table answer if exists
Hibernate: drop table question if exists
Hibernate: drop table user_quest if exists
Hibernate: drop table usr_answer if exists
Hibernate: drop table usr_test if exists
Hibernate: drop sequence hibernate_sequence if exists

Process finished with exit code -1



он что собирался дропнуть мою базу?
...
Рейтинг: 0 / 0
25 сообщений из 502, страница 1 из 21
Форумы / Java [игнор отключен] [закрыт для гостей] / Junit тестирование простейшего контроллера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]