> Всем привет,
>
> вот хочу что бы Log4j вывод JUint тестов оказывался у меня в maven
> репортах выполнения юнит тестов. Может подскажет кто как такое сделать?
> In vino veritas!
Не нужно этого делать. Пусть при падении теста будет только сообщение
какой assert не прошел. А все остальное нужно выбрасывать.
Иначе в проекте появляются тесты которые вроде проходят, но нужно
смотреть все ли хорошо у них в логах — а это уже не автоматическое
тестирование.
Если нужны логи — нужно запустить падающий тест в отладчике, дойти до
места падени и смотеть что там происходит.
Posted via RSDN NNTP Server 2.1 beta
> Здравствуйте, Other Sam, Вы писали:
>
> OS>Не нужно этого делать. Пусть при падении теста будет только сообщение
> OS>какой assert не прошел. А все остальное нужно выбрасывать.
> OS>Иначе в проекте появляются тесты которые вроде проходят, но нужно
> OS>смотреть все ли хорошо у них в логах — а это уже не автоматическое
> OS>тестирование.
>
> Ну я же ассерты не убираю? Просто я вижу в этом дополнительное удобство:
> если что-то отвалилось, есть дополнительная информация в виде логов.
В том-то и дело, что если что-то отвалилось (в по результатам прогона
автоматических тестов), то у вас должно быть:
— Версия исходников (или дата) в репозитарии
— Конкретный тест (класс, метод, ассерт)
— Железная конфигурация тестовой машины.
И все! Больше ничего не должно быть!!!
Дальше разработчик работая над исправлением этого бага должен выполнить
все необходимую работу в полный рост.
— Убедиться, что на другом железе ошибка повторяется (или не повторяется)
— Убедиться, что в последней версии ошибка так и не исправленна
— Отладчиком остановить систему в момент непосредственно перед ошибкой
— Найти неправильное состояние системы -> найти место которое привело
систему в неправильное состояние -> проверить почему то место оказалось
без тестов -> поматерить разработчиков тех мест -> обложить то место
тестами -> отложить исправление изначального бага до тех пор, пока в
"том" месте не начнут проходить все только что написанные тесты.
— Либо найти ошибочный алгоритм, или ошибочное предположение, или
перепутанные значения, или неполные значения в каком-то месте ->
Исправить этот дефект -> прогнать все тесты заново, и убедиться что
другие тесты не попадали -> закомитить изменения.
Posted via RSDN NNTP Server 2.1 beta
расскажу байку.
В одном проекте у меня был класс который должен был на основе данных в
БД отображать на веб странице некоторые данные. Причем связи/зависимости
были непростыми (роли/группы, узлы/деревья, объединения/группировки).
Разумеется был модульный тест, который на специально веделенном сервере
(использующем специально отведенную БД) проверял работу этого класса. По
данным в базе проверял что появляется на веб страничке. (это не
модульный тест, а скорее интеграционный, но тем не менее это был
автоматический тест).
Увы система автоматического тестирования была не достаточно
автоматической. Через некоторое время база усложнилась, специальная
тестовая машина усложнилась, данные в базе изменились, тесты стали
падать. Причем не потому что класс стал работать неправильно, а потому
что данные в базе были другие и в тестах нужно было использовать другие
эталонные данные. Решили забить на эти тесты, т.к. мы же не правили те
классы, которые эти тесты проверяют, а потом, когда начнем править тесты
подправим.
В итоге — разработчики не могут независимо прогнать определенную часть
тестов и проверить некоторую функциональность. Сама тестовая машина
требует обслуживания, и при этом почти не приносит пользы. Некоторая
функциональность была добавленна без тестов. Короче осталось только
признать у нас больше нет тестов по этой функциональности, придется
заново их создавать.
Решение: Нужно было добиться, чтобы тесты могли работать опираясь только
на исходный код, и пару сервисов. Т.е. перед каждым тестом созадавать
базу и заполнять эталонными данными, автоматически развертывать веб
приложение. И проверять уже на этой копии приложения.
Как позже оказалось, это довольно просто. Создаем базовый класс для
определенных тестов. Который перед каждым тестом развертывает копию веб
приложения (вплоть до создания базы данных), а после каждого теста
удаляет веб приложение.
class AbcWebAppTestBase {
// доступ к базе, которуе использует сайт.
public Connection getDbConnection(){};
// URL по которому доступен корень веб приложения
public String getSiteAddresss(){};
// Файловый путь, по которому можно читать развернутое веб
// приложение (например чтобы проверять .htaccess)
public String getSitePath(){};
}
Posted via RSDN NNTP Server 2.1 beta