Как вы анализируете аргументы для Java-программы?
Я делаю Java-программу Selenium WebDriver. У меня 25 приложений и 4 среды. Мне нужно иметь возможность передать что-то вроде -app app1 app2 app3... appn -env env1 env2 envn
Я должен быть в состоянии передать ни один, ни один или оба аргумента. Прямо сейчас у меня есть возможность передавать одно приложение и один env в этом порядке, но я должен быть в состоянии сделать это в любом порядке и с возможностью ни одного, ни обоих. Вот что у меня так далеко. При этом я могу либо не передавать аргументы и запускать каждое приложение для каждой среды (что я и хочу), либо я могу выбрать app1 env1 в указанном порядке для этого конкретного теста.
public static Application chooseAppTest(String[] args)
{
Application application = null;
switch (Application.valueOf(args[0]))
{
case ACCOUNTINVENTORY:
new AccountInventory(Environment.valueOf(args[1]));
AccountInventory.accountInventoryDatabaseTests(testResults);
break;
if (args.length == 0)
{
LogIn.loginTest(testResults);
DatabaseTest.testResults(testResults);
LinkTest.linkTests(testResults);
}
else
{
// First choose application, then choose environment
Application.chooseAppTest(args);
}
3 ответа
Я не думаю, что рекурсия необходима. Вы можете сделать что-то вроде этого:
public static void main (String[] args)
{
List<String> apps = new LinkedList<>();
List<String> envs = new LinkedList<>();
List<String> current = null;
// parse arguments
for (String arg : args)
{
if (arg.equals("-app")) current = apps;
else if (arg.equals("-env")) current = envs;
else if (current != null) // add argument
current.add(arg);
}
// parsing finished
Application.doSomethingWith(apps, envs);
}
Как прокомментировал Эллиотт, вы смотрели на Apache Commons CLI? Это анализатор командной строки.
Нет необходимости или выгодно использовать рекурсию. Вы можете прочитать все аргументы в массив и обработать их оттуда. Кроме этого, я не уверен, как вы поступите. С аргументами, организованными таким образом, как вы узнаете, какая среда подходит к какому приложению?