Мы выполняем кучу автоматических тестов против полностью развернутого веб-приложения Java (в дополнение к модульному тестированию) и хотели бы отслеживать коды этих тестов. Приложение написано на Java и работает на Tomcat. В настоящее время мы используем Cobertura для отслеживания охвата наших модульных тестов, поэтому я хотел бы придерживаться Cobertura. Я измерил нашу войну и могу генерировать отчеты из файла coberura.ser, но он всегда показывает 0% охвата.Cobertura показывает 0% покрытия для инструментальной WAR в Tomcat
Вот шаги, которые я отслеживаю:
- Построить баночку и войну в обычном процессе (не Инструментирование). Наши классы приложений упаковываются в файл jar, который затем помещается в lib-менеджер войны, которую мы развертываем.
- Распакуйте как кувшин, так и войну
- Восстановить снова, но на этот раз уроки классов.
- Скопируйте инструментальные классы в каталог распакованных контейнеров. Я делаю это, потому что инструменты не выводят файлы классов для вещей, у которых нет исполняемого кода (например, интерфейсов).
- Постройте банку из каталога распакованных контейнеров
- Добавить новую инструментальную банку и cobertura.jar в каталог lib из распакованного каталога войны и построить войну с этим.
- Добавить новую инструментальную войну и coberturaFlush.war в каталог Tomcat WebApps
- Добавить cobertura.ser (который был создан во время инструментовки) в TOMCAT каталог бен
- Start Tomcat
- ли материал в приложении
- Hit/coberturaFlush/flushCobertura в браузере.
- Остановить Tomcat
- Использование Cobertura-report.bat для создания отчета из файла cobertura.ser
Вот что я пытался до сих пор:
- Я подтвердил файлы класса в банке имеют ссылки на cobertura, поэтому я уверен, что они инструментаризованы.
- Я использую coberturaFlush.war, потому что я получаю кучу ошибок NoClassDefFound, когда останавливаю приложение, так что он не выглядит так, как будто он работает правильно. Это, кажется, общая проблема, и coberturaFlush кажется разумным обходным решением.
- Я уверен, что Cobertura использует правильный .ser-файл. Когда Tomcat начинается, я вижу, что этот файл быстро опускается до 0KB и создается файл cobertura.ser.lock, а затем возвращается к исходному размеру и файл блокировки удаляется. Я вижу, что то же самое происходит, когда я называю flushCobertura, а также когда закрываю Tomcat.
- Я также пытался генерировать отчеты с .ser-файлом после того, как я вызвал флеш, но прежде чем остановить Tomcat, и это тоже не сработало.
Я что-то не хватает? Любая идея, почему Cobertura всегда говорит о покрытии 0%?
Заранее спасибо.