Я, наконец, начинаю с модульного тестирования, узнав, что я должен делать это некоторое время, но у меня есть несколько вопросов:
(Не совсем в том же порядке, что и ваши вопросы)
Если полный набор тестов не занимает слишком много времени, вы должны всегда запускать его. Вы часто не знаете, какие побочные эффекты могут возникнуть в результате изменений.
Если вы можете комбинировать тесты скорости с вашим любимым модулем тестирования, вы должны это сделать. Это дает дополнительную информацию о качестве ваших изменений. Но делайте это только для критически важных частей вашего кода.
Из Википедии: «Единица – самая маленькая проверяемая часть приложения».
Ответы на вопросы в порядке:
Я отвечу тем, что могу.
Должен или не должен я повторно тестировать родительские классы при тестировании детей, если никакие методы не были перезаписаны?
Вы должны полностью протестировать родителя, а затем проверить только, какие изменения у ребенка.
Если у вас есть необязательный параметр в методе, вы должны написать тест для обоих, когда они присутствуют, а когда нет?
Да, проверьте все, что вызывает изменение в поведении.
Должно ли модульное тестирование каким-либо образом сочетаться с временем выполнения кода тестирования или должно оставаться полностью отдельным?
Они должны оставаться отдельными. Модульное тестирование – это проверка того, что метод делает то, что он должен. Вы должны проверить время выполнения кода на системном уровне, а затем сломать его, чтобы найти узкие места. Тестирование производительности каждой отдельной единицы приведет только к преждевременной оптимизации.
Есть ли веская причина не запускать полный комплект тестов каждый раз?
Если ваш тестовый пакет огромен и занимает много времени, вы можете запустить только его подмножество, пока вы все еще развиваетесь . Вы должны запустить весь пакет, когда вы (думаете, что сделали), чтобы убедиться, что вы ничего не сломали.
Просто так я правильно понимаю свою терминологию, к чему относится единица в модульном тестировании? Испытуемый класс? Метод? Параметр? Что-то другое?
«Единица» относится к тестируемому методу. Это наименьшая единица, которая имеет смысл разорвать программное обеспечение. Метод класса A может использовать класс B, но любой тест, который вы пишете для этого метода, не должен волновать. Просто проверьте этот метод.