powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
17 сообщений из 17, страница 1 из 1
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641216
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой класс:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Class A{
   public void m1(){
      // code
      m2();
      //code
   }
   public void m2(){
    //some code
   }
}




ничего криминального в вызове m2 внутри m1 нет насколько я понимаю.


у меня есть отдельный тест на m2 - который говорит, что m2 - работает правильно.

я иногда чувствую потребность не тестить вызов метода m2 внутри m1 ибо он и так протестен. Ну и иногда просто лень разбираться, что там делается - мне сказала, что m2 делает то-то то-то, используя это напиши m1. Условно говоря - может m1 в базу лезет....

Но чтобы так сделать, надо юзать довольно изощрённые штуки современных mock фрэймворков. А считается, что если код не говнокод, то тесты пищутся легко. Ну то есть надо мокнуть класс A, мокнуть метод m2 а для m1 сказать - call real method. mockA.m1(); А потом тестить результат вызова мока.

Вот и возникает вопрос что делать и как быть.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641447
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ничего криминального в вызове m2 внутри m1 нет насколько я понимаю.

Спорный вопрос. Возможно метод должен был быть приватным. На пальцах сложно сказать.

redwhite90я иногда чувствую потребность не тестить вызов метода m2 внутри m1 ибо он и так протестен.

Нужно покрыть все маршруты m1. Повторять тесты для m2, конечно же не нужно.


redwhite90А считается, что если код не говнокод, то тесты пищутся легко.
Вот видишь. Есть конретные примеры?
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641484
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

BlazkowiczЕсть конретные примеры?

Есть, но там слишком много захламляющей логики, которую я не могу выкинуть.

Но смысл в том, что оба метода торчат наружу(public). И один использует другой.

авторавторничего криминального в вызове m2 внутри m1 нет насколько я понимаю.
Спорный вопрос

ок. надо почитать об этом
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641565
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Class A{
   public void m1(){
       m0(); // code
       m2();
      m3()      //code
   }
   public void m2(){
    //some code
   }

   public void m0(){
    //some code
   }

   public void m3(){
    //some code
   }
}

и потом в тесте 

m0()
mock.m2()
m3()



нет?
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641647
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1,

что-то Вы путанно объясняете.

что тестится - непонятно
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641748
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90что тестится - непонятно

Что непонятного у человека горе, он вляпался в test driven programing, без подготовки.
И теперь не поймет, если он что-то протестировал в общем случае, надо ли тестировать в частном.

P.S. Да надо проверить что метод m1 адекватно реагирует на все возможные результаты работы (включая exceptions всякие) метода m2, и что m2 все еще соответствует той спецификации, по которой его вызывыает m1.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641848
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно передавать в m1 - m2 как параметр (как функцию ) как это делается в IoC

и для тестов - передавать туда null / mock

Код: java
1.
2.
3.
4.
5.
6.
public void m1(Func function) {
// code
  if (function != null)
    function();
  //some code
}



m1(m2); // вызов m1 с m2
m1(null) // вызов m1 без m2
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641861
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Что непонятного у человека горе, он вляпался в test driven programing, без подготовки.

Нет. Это не TDD. Код уже написан. Автор хочет покрыть. В TDD тест рождает код и вопросов не возникает.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641991
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

IMHO у него вместо кода // some code

Самое что ни на есть начало...

Если же он писатель тестов, к существующему коду, то вопросов тоже возникать не должно, ибо:
YouTube Video
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38641995
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев,

Blazkowicz прав.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642142
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90,
решение то, я уже предложил. Хотел бы чтоб вы его оценили.
redwhite90надо мокнуть класс A, мокнуть метод m2 а для m1 сказать - call real method. mockA.m1(); А потом тестить результат вызова мока.


Для меня выглядит слегка диким тестить мок объект. У меня как-то до этого вседа получалось инъектить моки как поля в тестируемые РЕАЛЬНЫЕ объекты.

Что думаете об этом ?
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642215
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Для меня выглядит слегка диким тестить мок объект. У меня как-то до этого вседа получалось инъектить моки как поля в тестируемые РЕАЛЬНЫЕ объекты.

Что думаете об этом ?

Да, мокать самого себя- это за гранью.

Вообще, мне видится, тот объект слишком большой. Возможно нарушен принцип одной ответственности.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642309
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,

прямой связи между single responsibility и тем, что нельзя вызывать public method в другом public методе я не усматриваю.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642318
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90прямой связи между single responsibility и тем, что нельзя вызывать public method в другом public методе я не усматриваю.
Он может быть косвеной. :) Я же уже писал выше, что надо смотреть конкретные кейсы.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642410
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЯ же уже писал выше, что надо смотреть конкретные кейсы.

Собственно да- выучить правила unit-test'ирования это одно, а проблема-то в конкретных ситуациях. Общих решений нет.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90, попробуйте тестировать не методы, а класс.
...
Рейтинг: 0 / 0
Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
    #38642472
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Blazkowiczпопробуйте тестировать не методы, а класс.
а можете раскрыть эту мысль ?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно написать тесты когда один метод класса вызывает другой метод класса внутри?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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