Что значит "модульный тест"? Означает ли это, что при тестировании класса код его зависимостей вообще не должен исполняться?
Здравствуйте, Аноним, Вы писали:
А>Что значит "модульный тест"?
Модульный тест означает не совсем правильный перевод слова
unit в контексте тестирования. Здесь должна быть "единица", а не "модуль". Ничего страшного, если под модулем понимать некоторую неделимую сущность, а не библиотеку компонент.
А>Означает ли это, что при тестировании класса код его зависимостей вообще не должен исполняться?
В идеале — да, ведь мы тестируем именно класс, а не то, от чего он зависит. С другой стороны, лего обнаружить сценарии, при которых модуль (единица кода) ничего не значит без зависимостей.
Например, при ответственности кода "записать данные в БД", необходимо тестировать код вместе с вызовом зависимостей. Можно, конечно, тестировать корректность построения запроса в БД, но тогда и ответственность кода меняется, тест может быть не полным, т.к. корректный запрос еще не гарантирует попадания информации в БД.
Здравствуйте, Аноним, Вы писали:
А>Что значит "модульный тест"? Означает ли это, что при тестировании класса код его зависимостей вообще не должен исполняться?
Мне нравится определение отсюда:
http://msdn.microsoft.com/en-us/library/aa292197(v=vs.71).aspx
Здравствуйте, okman, Вы писали:
O>Мне нравится определение отсюда:
O>http://msdn.microsoft.com/en-us/library/aa292197(v=vs.71).aspx
Кстати, оттуда
Each unit is tested separately before integrating them into modules
Это подтверждает то что слово модуль является некорректным переводом, т.к. unit и module используется в одном контексте с разными смыслами.
Здравствуйте, samius, Вы писали:
S>В идеале — да, ведь мы тестируем именно класс, а не то, от чего он зависит. С другой стороны, лего обнаружить сценарии, при которых модуль (единица кода) ничего не значит без зависимостей.
Вот у меня в проекте довольно много классов состояние которых состоит из состояния его зависимостей. При модульном тестировании и использовании заглушек, тесты теряют свою информативность, они не показывают общий смысл взаимодействия класса и его зависимостей. Просто происходит проверка правильности вызовов методов других классов. Вот это меня и беспокоит.
Здравствуйте, Аноним, Вы писали:
А>Вот у меня в проекте довольно много классов состояние которых состоит из состояния его зависимостей. При модульном тестировании и использовании заглушек, тесты теряют свою информативность, они не показывают общий смысл взаимодействия класса и его зависимостей. Просто происходит проверка правильности вызовов методов других классов. Вот это меня и беспокоит.
Это не должно беспокоить. Есть тесты модульные (unit), которые тестируют конкретную единицу кода, а есть тесты интеграционные, цель которых протестировать именно связки компонент, или модули в широком понимании.
Здесь
Просто надо определитсья с тем, что именно тестируется, связка или конкретный кусок кода. И называть тесты, которые тестируют это что-то соответственно.
Т.е. даже если ваши интеграционные тесты запускаются по той же кнопке, которая предназначена для запуска unit-тестов, ничего страшного в этом нет. Просто вы говорите "мои интеграционные тесты запускаются этой кнопкой" и все.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Вот у меня в проекте довольно много классов состояние которых состоит из состояния его зависимостей. При модульном тестировании и использовании заглушек, тесты теряют свою информативность, они не показывают общий смысл взаимодействия класса и его зависимостей. Просто происходит проверка правильности вызовов методов других классов. Вот это меня и беспокоит.
S>Это не должно беспокоить. Есть тесты модульные (unit), которые тестируют конкретную единицу кода, а есть тесты интеграционные, цель которых протестировать именно связки компонент, или модули в широком понимании. Здесь
S>Просто надо определитсья с тем, что именно тестируется, связка или конкретный кусок кода. И называть тесты, которые тестируют это что-то соответственно.
S>Т.е. даже если ваши интеграционные тесты запускаются по той же кнопке, которая предназначена для запуска unit-тестов, ничего страшного в этом нет. Просто вы говорите "мои интеграционные тесты запускаются этой кнопкой" и все.
Спасибо.