Как внедрить тесты в реализуемый Java-проект? - PullRequest
1 голос
/ 18 июля 2011

Я использую Eclipse в среде Java. Я должен ввести тестирование в уже ведущийся проект. Как начать? Юнит тесты на занятиях, а что еще? Каковы лучшие инструменты для работы (учитывая, что я использую затмение)? TestNG, JUnit, JTiger?

Как заставить других адаптироваться к тестам?

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 18 июля 2011

Eclipse имеет отличную поддержку JUnit.Это выглядит как отличная отправная точка.Я бы добавил новый тест директории с исходным кодом и создал бы структуру пакета, отражающую вашу папку src.Затем вы можете добавить свои юнит-тесты один за другим.Удачи!

1 голос
/ 19 июля 2011

много хороших вопросов.

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

Я использовал JUnit и TestNG.Оба почти одинаковы.TestNG имеет группы, то есть вы можете пометить тест как принадлежащий к группе, такой как разработка, сборка, интеграция и т. Д. Это особенно актуально, если у вас много тестов, и для их запуска требуется значительное время.

У вас уже есть автоматическая сборка?Если не начать с этого.Если вы предпочитаете использовать Maven, это относительно просто.Когда ваша сборка будет готова, напишите пару модульных тестов (просто чтобы что-то потерпеть неудачу ...) Затем установите Hudson / Jenkins и определите ваш проект там.Люди увидят, как здорово, что после того, как вы зафиксировали новый код, сборка запускается практически сразу, и вы увидите все неудачные тесты.Возможно, попытайтесь показать силу TDD своему боссу и объясните ему, что он должен заставить всех членов команды писать тесты.

Если у вас достаточно энергии, представьте Sonar своей компании.Люди увидят, насколько ужасен код, который они пишут, и насколько плохо тестовое покрытие.Они увидят, как быстро растет охват тестированием, и, вероятно, будут больше инвестировать в модульное тестирование.

Короче, удачи.Вы на правильном пути.

1 голос
/ 19 июля 2011

JUnit и TestNG оба в порядке. TestNG имеет больше возможностей и может быть полезен при интеграционных тестах, JUnit больше ориентирован на модульные тесты.

Возможно, вы захотите познакомиться с какой-нибудь насмешливой библиотекой, такой как Mockito. Инструменты покрытия кода, такие как Cobertura, и инструменты непрерывной интеграции, такие как Jenkins, тоже хороши.

Использование инфраструктуры DI, такой как Spring или Guice, полезно для написания более легко тестируемого кода. Используете ли вы DI-фреймворк или нет, чем слабее связан ваш код, тем легче его тестировать. Поскольку ваш проект уже находится в стадии реализации, вероятно, для этой части уже слишком поздно, что усложнит вашу задачу.

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

1 голос
/ 18 июля 2011

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

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

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

Об инструментах: к сожалению, я не могу реально сравнить разные инструменты, так как у меня есть только опыт работы с JUnit.

С JUnit легко стартовать, так как соответствующий инструментарий уже включен в Eclipse (мастера для создания шаблонов, запуска и оценки) ... и в сети имеется множество документации и примеров.

...