如何使命令行参数与其中一个、两个或两个参数一起运行JAVA

如何使命令行参数与其中一个、两个或两个参数一起运行JAVA,java,command-line-arguments,Java,Command Line Arguments,我正在制作一个selenium webdriver,我有25个应用程序和4个环境。我将它们设置为枚举,以便可以给出特定的命令行参数。现在我已经让它工作了,所以它需要一个应用程序,然后是一个环境。我需要能够做一些类似的事情 -app app1 app2 app3 -env env1 env2 我需要它要么不接受参数,要么接受参数,要么同时接受两个参数。这就是我目前所拥有的 if (args.length == 0) { LogIn.loginTest(testResults);

我正在制作一个selenium webdriver,我有25个应用程序和4个环境。我将它们设置为枚举,以便可以给出特定的命令行参数。现在我已经让它工作了,所以它需要一个应用程序,然后是一个环境。我需要能够做一些类似的事情

-app app1 app2 app3 -env env1 env2
我需要它要么不接受参数,要么接受参数,要么同时接受两个参数。这就是我目前所拥有的

if (args.length == 0)
{
    LogIn.loginTest(testResults);
    DatabaseTest.testResults(testResults);
    LinkTest.linkTests(testResults);
}
else 
{
    // First choose application, then choose environment
    Application.chooseAppTest(args);
}

考虑使用库来评估命令行参数,如。他们提供了一套很好的例子,你就不必再发明轮子了。根据您的示例,根据文档(尚未尝试),以下内容应该可以使用:


options.valuesOf(“app”)
然后应返回“app1”、“app2”和“app3”的列表。

无需为您编写代码,建议如下:

  • 循环遍历
    args
    数组的所有参数
  • 确保第一个值等于-app或-env
  • 将数组中第二个字符串中的所有参数收集到一个列表中,直到找到-app或-env为止
  • 将第二个-app/-env后面的所有参数收集到另一个列表中
  • 不允许-app或--env出现两次
  • 现在您将有两个列表,一个用于应用程序,另一个用于环境(尽管它们可以为空)

此问题与硒无关!您只是在寻找一种方法来解析传递给Java应用程序的参数。
OptionParser parser = new OptionParser("app:env:");
OptionSet options = parser.parse("-app", "app1", "app2", "app3", "-env", "env1", "env2");