Как делают меня модульный тест методы в объекте метода?

Я выполнил "Метод замены с рефакторингом" Объекта Метода, описанным Beck.

Теперь, у меня есть класс с "выполненный ()" метод и набор функций членства, которые разлагают вычисление на меньшие единицы. Как я тестирую те функции членства?

Моя первая идея состоит в том, что мои модульные тесты являются в основном копиями "выполненный ()" метод (с различными инициализациями), но с утверждениями между каждым вызовом к функциям членства для проверки состояния вычисления.

(Я использую Python и unittest модуль.)

class Train: 

    def __init__(self, options, points): 
        self._options = options 
        self._points = points 
        # other initializations

    def run(self): 
        self._setup_mappings_dict() 
        self._setup_train_and_estimation_sets() 
        if self._options.estimate_method == 'per_class': 
            self._setup_priors() 
        self._estimate_all_mappings() 
        self._save_mappings() 

    def _estimate_all_mappings(): 
        # implementation, calls to methods in this class

    #other method definitions

У меня определенно есть ожидания о том, чем состояния членских атрибутов должны быть прежде и после вызовов к различные методы как часть реализации run() метод. Я должен делать утверждения об этих "частных" атрибутах? Я еще не знаю как к unittest эти методы.

Другая опция состоит в том, что я действительно не должен тестировать их.

6
задан 7 May 2010 в 02:36
поделиться

1 ответ

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

10
ответ дан 8 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

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