Тестировать или не тестировать - функциональность клавиатуры - PullRequest
0 голосов
/ 27 января 2010

Я никогда не использовал TDD и модульное тестирование «правильно», но хотел бы изучить некоторые приемы. Не могли бы вы помочь мне с идеей о написании методов тестирования для этого не слишком проверяемого (на мой взгляд) случая.

Класс, который я хочу протестировать, еще не написан (я помню, мне нужно сначала написать тест), но у него будет метод для подключения комбинации клавиш Windows (переданный в качестве параметра) и вызовет событие когда эта комбинация клавиш нажата. Итак, как мне пройти тестирование такого случая? Нужно ли мне сначала писать процедуру симуляции нажатия клавиш? Нужен ли мне модульный тест для симуляции нажатия клавиш, или тест на «ловушку» «отменит» необходимость? Это юнит-тест или он вообще называется как-то иначе?

Суть этого вопроса довольно познавательная, я прекрасно понимаю, что это не лучший вариант для модульного тестирования и, вероятно, не стоит затраченных усилий. Я просто хочу использовать нетривиальный сценарий для лучшего понимания принципов.

Ответы [ 2 ]

0 голосов
/ 27 января 2010

Я склонен согласиться с CMW.

Общий подход заключается в модульном тестировании логики кода, который вы написали, а не системы, от которой вы зависите от Windows (или любой другой внешней "службы")

Тестирование фактической функциональности нажатия клавиш, IMO, было бы "интеграционным" тестом. Например, что-то сделанное как часть тестового скрипта, которое будет выполнено QA.

Ключом к модульному тестированию в этом сценарии является отделение зависимости от действия нажатия клавиши от метода логики в них, который реагирует на нажатие клавиши. Это где модульные тесты становятся очень ценными. Они выделяют области вашего кода, которые могут быть повторно учтены для соответствия SRP .

0 голосов
/ 27 января 2010

Я бы предположил, что вы сначала начнете с написания теста, который напрямую вызывает метод Hook, и убедитесь, что a) возникло какое-то событие или b) установлено некоторое значение в тестируемом классе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...