Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Когда тест в junit считается успешным.  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
mad_nazgul
unit-тесты в понимании методологии TDD, это тест, который не имеет контекста.
TDD не определяет что такое модульные тесты. TDD - это о том как переплетать написание тестов и prod кода.
mad_nazgul
Это уже не unit-тест, т.к. то что мы тестируем явно имеет состояние, которое мы должны передать тесту. И оно может быть разным в зависимости от окружения. Например, в зависимости от переменных среды.
Тут дело не в состоянии, а в том что есть обращение к внешнему окружению.
mad_nazgul
ИМХО правильнее их называть все таки интеграционными тестами, т.к тестируется часть контекста спринга.
Ну дак это все ИМХО, ни на чем не основанное. Почитай статью по ссылке. Тут нет четкой терминологии.
mad_nazgul
Поведение программы тестируют интеграционные тесты.
Т.к. они воспроизводят некоторую последовательность действий.
И проверяют результат.
Все то же относится и к модульным тестам. Они что-то вызывают, а потом проверяют результат.
mad_nazgul
Кроме того, unit-test имеет смысл писать ДО написания реализации, а не ПОСЛЕ.
Их имеет смысл писать всегда. Потому как они защищают нас всякий раз когда мы меняем что-то внутри классов. И это их главная задача.

Модульные тесты писали и до TDD. Более того - я нередко пишу в TDD и не модульные тесты тоже. Получаю все тот же профит, что и при TDD с модульными тестами.

Основное отличие модульных и высокоуровневых тестов: сложность, скорость, кол-во компонентов которые они проверяют вместе, доступ к окружению. B это все никак не относится к TDD.
31 май 21, 11:05    [22329186]     Ответить | Цитировать Сообщить модератору
 Re: Когда тест в junit считается успешным.  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
Stanislav Bashkyrtsev
Их имеет смысл писать всегда. Потому как они защищают нас всякий раз когда мы меняем что-то внутри классов. И это их главная задача.

Модульные тесты писали и до TDD. Более того - я нередко пишу в TDD и не модульные тесты тоже. Получаю все тот же профит, что и при TDD с модульными тестами.

Основное отличие модульных и высокоуровневых тестов: сложность, скорость, кол-во компонентов которые они проверяют вместе, доступ к окружению. B это все никак не относится к TDD.


Насчет того, что тесты нужно писать всегда - согласен.
Просто надо понимать, что если хотите 100% покрытие тестами, то писать лучше в стиле TDD.
т.е. пишем тест, потом под него реализацию.

Если же наоборот, то начинаются проблемы.
Нужно ли их "героически преодолевать"?
Думаю не стоит.
Т.к. один интеграционный тест может соответствовать до 50% unit-test.

По моему unit-test это инструмент разработчика, для разработки, который заточен под определенный стиль программирования.
И слепо пытаться внедрить их везде, это "карго культ".

Мне гораздо приятнее работать с кодом, который покрыт тестами, чем с кодом без тестов.
Но я понимаю, что unit-test не все умеют писать.:-)
31 май 21, 15:50    [22329399]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Java Ответить