Должен ли я написать модульный тест для всего? - PullRequest
20 голосов
/ 05 февраля 2009

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

Ответы [ 13 ]

0 голосов
/ 06 февраля 2009

Разработка тестов - приобретенный навык - чем больше вы тестируете, тем лучше у него получается. Некоторые вещи сложно проверить, но если вы думаете об этом в течение нескольких минут, вы часто можете найти способ.

Тесты могут быть грязными - например, Java-программа может запустить интерпретатор или даже оболочку, такую ​​как bash, которая, в свою очередь, запускает серию фильтров Unix, которые, как вы надеетесь, будут выводить идентичные двоичные файлы. Не беспокойтесь - качество тестового кода не должно быть таким же высоким, как у готового продукта.

0 голосов
/ 05 февраля 2009

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

У меня был метод длиной в 1 строку. В подобных местах в моем приложении я написал модульные тесты, но, находясь в спешке, подумал, что это не может дать сбой. Я был неправ, это не сработало: -)

Дополнительным преимуществом написания модульных тестов является не только тестирование вашего кода, но и то, что тот, кто никогда не видел ваш код раньше, может прочитать тесты и понять, как ваш код должен работать в конкретных сценариях ... например, в спецификации.

0 голосов
/ 05 февраля 2009

Если вы сталкиваетесь с трудностями при настройке определенной области кода для тестирования, возможно, стоит изучить макет фреймворка, такой как jMock или EasyMock .

...