Должен я методы модульного теста, которые наследованы от суперкласса?

Это делает работу также

def foo(input_message):

    c = 0 
    output_message = ""

    for m in input_message:
        if (c%2==0):
            output_message = output_message + m.lower() 
        else: 
            output_message = output_message + m.upper()
        c = c + 1 

    return output_message
8
задан Esko 1 January 2009 в 19:17
поделиться

4 ответа

Я конкретно никогда не делал бы альтернативного 1 (разрешение тестовой иерархии классов совпасть с фактической иерархией классов), если это означает, что Вы будете запускать те же тесты неоднократно для каждого тестового подкласса. Я также обычно скептически отношусь к разделению на подклассы тестовых классов кроме общего служебного базового класса.

Я обычно делаю 1 тест для каждого класса в иерархии, кратком обзоре или нет. Таким образом, базовый класс имеет отдельный тест (обычно с локальным для теста частным подклассом, который используется для тестирования его конкретно), и я использую свое знание подклассов для записи надлежащих тестов для каждого подкласса. Я вижу в выполнениях покрытия, что пропускает тесты, таким образом, я обычно не слишком формализуюсь заранее.

7
ответ дан 5 December 2019 в 07:13
поделиться

"протестируйте каждый метод индивидуально на каждый класс реализации"

В частности, отказ переопределить метод суперкласса правильно является общей ошибкой. Автор подкласса делает предположения о суперклассе. Изменения суперкласса и подкласс теперь повреждаются.

11
ответ дан 5 December 2019 в 07:13
поделиться

Обеспечьте достаточно тестов так, чтобы Вы чувствовали себя комфортно - на основе Вашего знания реализации. Я не рассматриваю поблочное тестирование как абсолютно тестирование методом "черного ящика". Если Вы знаете, что базовый класс никогда не называет виртуальных методов (или по крайней мере ни один, что переопределяется), затем отмечают, что факт, но эффективно не копирует модульные тесты, которые Вы уже получили.

Поблочное тестирование может, конечно, быть взято к экстремальным значениям - всегда стоит сбалансировать значение, которое Вы получаете от него с усилием, которого это стоит Вам.

4
ответ дан 5 December 2019 в 07:13
поделиться

С TDD Вы не должны стремиться к методам тестирования, но поведению или поддержке Вашего кода. Поэтому при реализации подкласса, можно ограничить тестированием только поведений, которые отличаются от базового класса. Когда в сомнении, запишите новый тест.

1
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

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