picocli:为什么此JUnit测试失败?

时间:2019-04-09 13:06:07

标签: java picocli

尝试运行JUnit测试错误时测试无法正确运行

package picocli;

import picocli.CommandLine.Option;

public class ComparatorRunnerConfig {

      @Option(names = {"-rc", "--report-class"}, required = false,
              description = "define report")
      private String report;

      public String getReport() {
            return report;
      }
}

我的JUnit测试:

package picocli;

import static org.junit.Assert.*;
import org.junit.Test;

public class ConfigurationTest {

    @Test
    public void testBasicConfigOptions() {
        String args = "-rc BlahBlah";
        ComparatorRunnerConfig mfc = new ComparatorRunnerConfig();
        new CommandLine(mfc).parse(args);

        String myTestValue = mfc.getReport();
        assertEquals(myTestValue, "BlahBlah");
    }
}

测试失败。

1 个答案:

答案 0 :(得分:1)

问题在于该测试有一个细微的错误:目的是传递两个参数:选项"-rc"和其选项参数"BlahBlah",但是测试实际上是什么所做的是传递带有嵌入式空格的单个参数"-rc BlahBlah"

Picocli将无法匹配此输入,并且将引发异常(可能错误消息显示类似“ unknown option -rc BlahBlah”之类的信息,但是我现在不在我的电脑旁,因此无法验证)。

>

解决方案是将测试更改为此:

String[] args = "-rc BlahBlah".split(" ");

或者这个:

String[] args = new String[] {"-rc", "BlahBlah"};

测试中的这个错误实际上是一个相当普遍的错误,我自己也犯过几次这个错误。 :-)

作为旁注:您可以使用picocli的tracing feature通过设置系统属性-Dpicocli.trace=DEBUG来帮助解决此类问题。