junit测试apache CommandLineParser的例子

时间:2014-03-20 21:07:48

标签: java junit apache-commons

以下是使用apache CommandLineParser

的示例代码
public class Foo {

  public static void main(final String[] args) throws Exception {

    Options options = new Options();

    options.addOption("x",
            true, "comment for param x");

    options.addOption("y",
            true, "comment for param y");


    CommandLine commandLine = null;

    CommandLineParser parser = new PosixParser();

    try {
        commandLine = parser.parse(options, args);
    } catch (ParseException e) {
        throw new RuntimeException("Error parsing arguments!");
    }

    if (!commandLine.hasOption("x")) {
        throw new IllegalArgumentException("x"
                + " option is missing!");
    }

    String numberOfColumns = commandLine.getOptionValue("x");
 :
 :

}

JUNIT测试代码:

@Test
public void testFoo() throws Exception {

    args = new String[2];

    args[0] = "x" + "=" + "hello";

    args[1] = "y" + "=" + "world";

    Foo.main(args);

}

我的问题/疑问:

CommandLineParser一直在抱怨“缺少x选项!”。所以我相信,我将参数及其值传递给命令行解析器的方式是错误的。我也尝试了其他方法。

    args[0] = "-x" + "=" + "hello";
    args[1] = "-y" + "=" + "world";

以及

    args[0] = "x" 
    args[1] = "hello";
    args[2] = "y" 
    args[3] = "world";

有人可以告诉我传递参数及其值的正确格式,以便成功吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

据我所知,参数必须以减号开头。

args[0] = "-x";
args[1] = "hello";
args[2] = "-y";
args[3] = "world";

答案 1 :(得分:0)

使用以下方法测试输入:

public class Main {
    public static void main(String...args) {
        System.out.println(Arrays.toString(args));
    }
}


以下显示了不同输入的示例

INPUT: -x = hello -y = world

args[0]="-x=hello"
args[1]="-x=world"


INPUT: -x hello -y world

args[0]="-x"
args[1]="hello"
args[2]="-y"
args[3]="-world"