Рассылка отчета по почте с помощью Ant+TestNG

Бывают моменты, когда хочется оптимизировать работу своего фреймворка, чтобы он мог делать полезные вещи. Сегодня я хочу рассказать, как запускать свой тест-сьют с помощью ярлыка на рабочем столе (не заходя в ваш IDE) и, как бонус, отсылать репорт о выполненных тестах на указанные вами имейлы…

Для всей этой «магии» нам понадобятся:

  1. установленный на системе Ant (как правильно установить и настроить смотрите ниже);
  2. TestNG;
  3. два jar-архива: mail.jar и activation.jar
  4. да и, пожалуй, всё – остальное будем писать своими ручками.

Для того, чтобы запускать с помощью TestNG тест-сьют нам нужен всего лишь один xml-файл (testng.xml), в котором будут прописаны параметры запуска тест-сьюта – имена тестов, где они находятся и т.п. В моем случае testng.xml имеет такое содержание:

```


  
    
      
    
  
  
    
      
    
  

```

Как видите, ничего сложного – прописаны имя тест-сьюта и имя тестовых классов (в моем случае это ‘test1’ и ‘test2’ в пакете project_packet).

Этот файл уже можно использовать для запуска всего тест-сьюта – правая кнопка мыши на testng.xml->Run As->TestNG Suite. Но наша цель запускать тест-сьют с ярлыка на рабочем столе без запуска IDE, да еще и отсылать письма с репортом нашим любимым кастомерам!!! Как это сделать? Очень просто! Для этого нам как раз и понадобится наш «муравейчик» Ant. Для запуска билда проекта (соответственно «прогона» тестов), нам нужен файлик build.xml, в котором мы должны прописать что, как, когда и зачем запускать и отсылать.

Устанавливаем Ant в нашу систему: скачиваем архив с бинарники отсюда, распаковываем в любую папку (в моем случае я выбрал папку Workspace Эклипса). Теперь нужно прописать нашего муравья в Path’e системы – Пуск->Панель управления->Система->слева «Дополнительные параметры системы»->кнопка Переменные среды. Создадим системную переменную с именем ANT_HOME и значением «ваш путь к папке с Антом без кавычек» (в моем случае это D:\Workspace Eclipse\apache-ant-1.8.3)

Теперь открываем переменную Path и дописываем в конце значений, отделяя от предыдущей записи точкой с запятой, такой текст - %ANT_HOME%/bin

Жмем ОК и проверяем, правильно ли мы установили нашего муравья – вызовем командную строку Windows и введем такой текст – ant –version

Если все ОК, то будет показана текущая версия Ant.

Для отсылки писем, мы в наш ранее созданный build.xml-файл, добавляем согласно оф. сайта Анта (http://ant.apache.org/manual/Tasks/mail.html) данный код:

```

	
		
		
		
		Testing of test-suite “The best test suite!” was completed
		
			
				
			
		
	

```

Интересно то, что если мы не пропишем зависимость отсылки письма от run (depends="run"), то в первую очередь будет отослано письмо, а только потом прогонятся тесты.    

Хочу предупредить, что вы должны изменить под свои нужды адреса почтовых ящиков. Для отправки писем используются настройки mail.ru-аккаунта. Если вам понадобится какой-то другой smtp-сервер, используйте его настройки (их можно глянуть там, где описываются настройки для почтовых клиентов под конкретный почтовый сервер).

Теперь давайте научим муравья отсылать письма с репортом. Настройки чем, куда и когда отсылать у нас уже прописаны в build.xml, осталось только подкинуть Анту нужные библиотеки. Скачиваем два jar-архива: mail.jar (из архива JavaMail API ( http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html ) и activation.jar (из архива JavaBeans Activation Framework (JAF) - http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jaf-1.1.1-fcs-oth-JPR) и бросаем их в папку с библиотеками Анта (в моем случае это D:\Workspace Eclipse\apache-ant-1.8.3\lib) и добавляем их же в проект (это уже необязательно). Всё, наш Ант уже умный и может рассылать письма, но очень ведь хочется запускать тест-сьют с Рабочего стола. Это тоже просто – пишем с помощью текстового редактора такой текст:

d:

cd «Путь к вашему проекту в вашем IDE к папке с build.xml (без кавычек)»

ant send_email

и сохраняем его с расширением .bat

например, start_testing.bat

Прошу обратить внимание, что команды в батнике могут вами быть изменены в случае другого месторасположения файла build.xml
Теперь двойным нажатием на start_test.bat мы можем прогнать весь наш тест-сьют. Нет ничего сложного в том, чтобы вставить ярлык этого файла на Рабочий стол и сделать его красивым.

Надеюсь, что мой урок будет вам очень полезен! Спасибо!

У меня такой впорос, почему-то система не видит мой ант установленный.  Архив скачен, системная переменная создана, в переменную Path , дописано %ANT_HOME%/bin. 

Но при запуске батника  получаю  ошибку:  'ant' is not recognized as an internal or external command, operable  program or batch file.

а у вас определенна переменная %ANT_HOME%?

для того чтобы проверить это, откройте консоль и выполните команду

echo %ANT_HOME%

Переменная %ANT_HOME%  опеределена.

echo %ANT_HOME% - это команда ничего не даёт, я её запускаю и  она себя же показываета, то есть текст  "echo %ANT_HOME%"

а что выдает вот такая комманда echo %PATH%?

C:\WINDOWS\system32;C:WINDOWS;C\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Programfiles (x86)\QuickTime\QTSystem\;C:\Program Files\TortoiseSVN\bin;%ANT_HOME%\bin

вместо %ANT_HOME%\bin укажите полный абсолютный путь, например, c:\folder\ant\bin

указал полный путь.

 

теперь выдаётся ошибка:

 

c:\workspace\apache-ant-1.8.3\bin>ant test

Buildfile: c:\workspace\apache-ant-1.8.3\bin\build.xml

    [taskdef] Could not load definitions from resource testngtasks. It cold not be found.

 

test:

BUILD FAILED

c:\workspace\apache-ant-1.8.3\bin\build.xml:6: Problem: failed to create task or type testing

Couse: The name is undefined.

Action: Check the spelling.

Action: Check that any custom tasks/types have been declared.

Action: Check that any <presetdef>/<macrode> declarations have taken place.

Приветствую!

Ссылка http://apache.strygunov.com/ant/binaries/apache-ant-1.8.3-bin.zip не доступна. Что могло случиться?

Мария.

По всей вероятности обновилась версия и ссылка стала недоступна. Сcылка на новую версию Ant - http://apache-mirror.telesys.org.ua//ant/binaries/apache-ant-1.8.4-bin.zip

Официальный сайт - http://ant.apache.org/bindownload.cgi

c:\workspace\apache-ant-1.8.3\bin\build.xml:6: Problem: failed to create task or type testing

Проблема в build.xml:6:
возможно неправильная кодировка файла 
должна бить 

<?xml version="1.0" encoding="iso-8859-1"?>

Для отсылки писем, мы в наш ранее созданный build.xml-файл,
где взять 
build.xml-файл для linux?
заранее благодарочка

все хорошо
да только с отчетом письма ругается на build.xml

- from doesnt support  the nested "replyto" element 

посмотрел http://ant.apache.org/manual/Tasks/mail.html

replyto есть 

 

Добавил апдейт к статье. Заметил, что может присутствовать некоторая задержка между выполненным удачно таргетом и получением письма (где-то 10-15 минут). Но письмо приходит. Результат выполненного таргета:

sending_email:
     [mail] Sending email: Testing blah-blah-blah
     [mail] Sent email with 1 attachment

BUILD SUCCESSFUL

Вы можете выложить полностью файл build.xml?

А зачем запускать тесты и отсылать отчёты со своего компьютера?

Для этого же есть Jenkins (Hudson / TeamCity / Bamboo / ...).

Пусть он раз в час и тесты запускает, и отчёты отправляет.

ну потому, что кто-то его не использует либо просто не знает о его существовании

потому так и происходит