Можно ли синхронизировать тестовые примеры JUnit с тестируемыми классами в Eclipe?

Я знаю, что можно создать TestCase или TestSuite с помощью мастера в JUnit, но как синхронизировать код после изменения тестируемого класса, например, изменения подписи метода или новых добавленных методов. Я хотел бы, чтобы мои TestCases могли синхронизировать (удалять или добавлять) эти измененные методы/параметры/подписи методов в моих TestCases.

Я пытался искать в Google безрезультатно, может быть, для этого есть плагин eclipse?


person Steven Rosato    schedule 27.07.2009    source источник


Ответы (3)


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

Цитата из http://blog.daveeastels.com/files/BDD_Intro.pdf

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

person Esko Luontola    schedule 28.07.2009
comment
Спасибо за ответ. Вскоре после публикации этого вопроса я понял, что написание тестов, основанных на поведении, — это правильный путь, и поэтому я этим и занимаюсь. Сейчас мне действительно не нужна синхронизация модульных тестов :) Я полностью поддерживаю эту точку зрения (модульное тестирование поведения). В сумме получается, что тесты легче читать, поскольку имя метода содержит поведение, которое он тестирует. - person Steven Rosato; 02.10.2009

Как упоминалось ранее, рефакторинг, такой как переименование или перемещение, будет автоматически отражаться в тестовых примерах, если вы выполняете рефакторинг с использованием инструментария Eclipse, а не, например, путем переименования вручную.

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

Лучше отслеживать покрытие кода с помощью такого инструмента, как Cobertura или Эмма , который имеет хороший подключаемый модуль Eclipse, который позволяет вам видеть внутри вашего исходного кода, какой код покрываются тестами, а какие нет. Это ваш отчет о том, где вам нужно больше испытаний.

person Boris Terzic    schedule 27.07.2009
comment
Да, я понимаю, я думал, что, возможно, есть что-то за пределами охвата кода, но я думаю, что это все равно подойдет :) Большое спасибо за четкий ответ. - person Steven Rosato; 28.07.2009

Если вы измените сигнатуры методов с помощью автоматического рефакторинга, то тестовые примеры и весь другой код, вызывающий метод, будут автоматически обновлены.

Для недавно добавленных методов я не знаю, как автоматически обновлять тестовый класс.

person Carl Manaster    schedule 27.07.2009