Добрый день. Интересует как люди ставят тесты на рельсы.
С самими тестами проблем нет. Проблема с их запуском. Пока я запускал их с локальной машины все было просто, но как только пришли девопсы все изменилось. Теперь необходимо дать ребятам jar’ник (или jar’ники), которые они будут запускать командой, которой я скажу и запускать мои тесты автоматически.
Я попытался сделать …
Потратив время в гугле я нашел несколько способов и наиболее разумным мне показался следующий:
Весь код в одной репе (фреймворк + тесты). Эта репа собирается в два джарника. В первый входят все классы (с зависимостями), а во второй только тесты (test-classes). Собирается все мавеном при использовании maven-assembly-plugin и maven-jar-plugin. Получается два джарника. Так же в интернете было найдено прямо то, что нужно.
В конечном итоге набрав в консоле:
java -classpath "qa-1.0-SNAPSHOT-jar-with-dependencies.jar" org.testng.TestNG -testjar qa-1.0-SNAPSHOT-tests.jar -xmlpathinjar resources/testng.xml
Увидел картину:
[TestNG] [ERROR]
Cannot find class in classpath: com.qa.tests.back.SmokeTest
Exception in thread "main" java.lang.NullPointerException
at org.testng.TestNG.getStatus(TestNG.java:211)
at org.testng.TestNG.main(TestNG.java:1324)
Из ошибки кажется, что в клас пасе нет этих файлов. Логично. Добавляем в клас пас еще джарник и тестами:
java -classpath "qa-1.0-SNAPSHOT-jar-with-dependencies.jar;qa-1.0-SNAPSHOT-tests.jar" org.testng.TestNG -testjar qa-1.0-SNAPSHOT-tests.jar -xmlpathinjar resources/testng.xml
Получаю:
Error: Could not find or load main class org.testng.TestNG
Отлично теперь нет даже testng.
После этой точки включился режим паники и я начал пробовать хоть как-то завершить задачу и не придумал ничего лучше, чем засунуть тесты в секцию с сорцами и запускать их программно гонереным testng сьютом. Написав соответствующий манифест собрал один единственный джарник и отдал девопсам. Они рады, а я нет. Как только мне понадобится депенденси на этот проект я буду тянуть ег овместе с тестами. Да и вообще как тольк опридет еще кто-то работать я умру от стыда.
TL;DR
Как бы организовать поставку jsr’ников так, чтоб запустить их можно было на удаленной машине, имея только этот jar’ник и саму джава машину.