Модульное тестирование в C # - следует ли вам проводить модульное тестирование в производном классе, о котором заботятся в базовом классе?

По сути, я понимаю, что должен тестировать конструктор Generic Foo.Должен ли я также протестировать конструктор для неуниверсальной версии?Причина, по которой я спрашиваю, заключается в том, что исключение выдается на уровне универсального конструктора ...
4 голоса | спросил michael 11 +04002011-10-11T18:40:31+04:00312011bEurope/MoscowTue, 11 Oct 2011 18:40:31 +0400 2011, 18:40:31

4 ответа


0
Одним словом да.Ключевым моментом здесь является регрессия - вы будете писать модульные тесты для проверки вашей текущей реализации (или даже перед реализацией, если вы TDD), но также вы пишете ее, чтобы защитить себя от взлома изменений кода в будущем.Поскольку и базовый, и подкласс могут быть изменены в будущем - оба должны быть проверены.
ответил Amittai Shapira 11 +04002011-10-11T19:07:15+04:00312011bEurope/MoscowTue, 11 Oct 2011 19:07:15 +0400 2011, 19:07:15
0
Да.Не глядя на все реализации, это самый простой способ проверить, что ваши производные классы сохранили гарантии вашего базового класса.Особенно, когда стажер Боб приходит позже и модифицирует ваш производный класс, чтобы сделать что-то еще.
ответил Ilian 11 +04002011-10-11T18:50:25+04:00312011bEurope/MoscowTue, 11 Oct 2011 18:50:25 +0400 2011, 18:50:25
0
По-разному...почему ты пишешь юнит-тесты?1) проверить код, который вы собираетесь написать2) проверить код, который вы уже написали3) проверить код, который кто-то может написать в будущемЕсли вы пишете код для тестирования того, что собираетесь написать, напишите его в соответствии с требованиями кода, который вы собираетесь написать.Если вы пишете тесты для проверки своего кода, проверьте код, который вы пишете.Если вы пишете тесты, чтобы помешать другим людям изменять ваш код, это не ваша ответственность.примерУ вас есть базовый класс A с определенным методом M. Вы проверили этот метод задом наперед, вбок и вверх ногами.Затем вы создаете 3 подкласса A и называете их B, C и D. Вы добавляете новые функциональные внутренние методы для классов B и C.Вам следует протестировать новые методы классов B и C, потому что этот код не проверен, но метод M из класса A уже протестирован.Вы переопределяете метод M в классе D, добавляете код и затем вызываете базовый метод M. Новый метод переопределения должен быть протестирован, и его следует рассматривать как совершенно новый метод.Модульный тест не может подтвердить, что был вызван метод M базового класса.Написание одного и того же теста 4 раза никому не поможет.Каждый разработчик должен переписывать тесты для кода, который они пишут.Если этот код проверен, и тесты соответствуют требованиям, и тесты пройдены, тогда код хорош.Сдавать один и тот же экзамен три раза подряд бессмысленно.С другой стороныМы не живем в идеальном мире, и если у вас есть проблемы с другими разработчиками, которые не тестируют свой собственный код, то вам может быть полезно выполнить их работу за них.Но поймите, что не ваша задача проверять код, который они пишут, а их работа.
ответил cwharris 11 +04002011-10-11T19:08:31+04:00312011bEurope/MoscowTue, 11 Oct 2011 19:08:31 +0400 2011, 19:08:31
0
Вам также следует написать модульные тесты для производного класса!Модульные тесты гарантируют, что тестируемый класс работает так, как вы ожидаете.Это дает вам возможность изменить его когда-нибудь.Если тогда вы сделаете ошибку при рефакторинге конструктора производного класса - ни один модульный тест не найдет эту ошибку.(Если вы не написали модульные тесты для производного класса).
ответил Fischermaen 11 +04002011-10-11T18:44:47+04:00312011bEurope/MoscowTue, 11 Oct 2011 18:44:47 +0400 2011, 18:44:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132