Парсинг аргументов командной строки совместно с парсингом других аргументов в TestNG

Здравствуйте.
Ситуация следующая:
Необходимо сделать так, чтобы мой джарник с тестом принимал на вход параметры командной строки, типа:

java -jar test.jar -h //localhost -l admin -p 12345

я написал парсинг с помощью либы commons-cli, но так как я затем вызываю мейн метод класса org.testng.TestNG и передаю в его парсинг параметры командной строки,то возникает конфликт…
Подскажите куда копать, как грамотно добавить свои ключи в уже имеющийся список ключей TestNG.

Подобные вещи обычно сетятся через переменные окружения. Что вам мешает написать нечто вроде:

java -jar test.jar -Durl=localhost -Dlogin=admin -Dpassword=12345

А потом вычитывать их в коде:

String url = System.getProperty("url");
String login = System.getProperty("login");
String password = System.getProperty("password");

П.С. В крайнем случае, можно легко засетить все это дело даже через testng.xml параметры, если пропертей немного и они глобальные.

1 лайк

а как заюзать эти переменные окружения и ключи TestNG?

java -jar test.jar -Durl=localhost -Dlogin=admin -Dpassword=12345 -testclass TestClass

это корректно?

А почему нет? TestNG должен взять только те аргументы, которые ему нужны, а все остальное - ваше личное дело. Хотя, я не смотрел, как устроен их внутренний cmd парсер, но по-хорошему, они не должны бросать exception в случае наличия “лишних” аргументов.

1 лайк

ругнулся… ладно, возможно не буду с этим заморачиваться, а просто буду все данные формировать в testng.xml