尝试运行 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的 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");
}
}
Run Code Online (Sandbox Code Playgroud)
测试失败。
问题是,测试有个微妙的问题:目的是传递两个参数:选项"-rc"和选项参数"BlahBlah",但什么测试实际上确实是通过一个单一的参数"-rc BlahBlah"与嵌入式空间。
Picocli 将无法匹配此输入并将引发异常(可能错误消息说的是“未知选项 -rc BlahBlah”之类的内容,但我现在不在我的电脑旁,因此无法验证)。
解决方案是将测试更改为:
String[] args = "-rc BlahBlah".split(" ");
Run Code Online (Sandbox Code Playgroud)
或这个:
String[] args = new String[] {"-rc", "BlahBlah"};
Run Code Online (Sandbox Code Playgroud)
测试中的这个错误实际上是一个相当常见的错误,我自己也犯过几次这个错误。:-)
附带说明:您可以使用 picocli 的跟踪功能通过设置系统属性来帮助解决此类问题-Dpicocli.trace=DEBUG。
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |