picocli:为何我的JUnit测试执行失败?
解决JUnit测试失败的问题
我帮你找到了测试失败的核心原因,问题出在picocli参数解析的传参方式上,咱们一步步来修正:
问题根源
picocli的CommandLine.parse()方法要求传入的是字符串数组,每个数组元素对应一个独立的命令行参数(选项或参数值)。而你当前的代码把"-rc BlahBlah"作为单个字符串传入,picocli会把它当成一个完整的参数,不会自动拆分选项和值,最终导致report字段始终为null,断言自然失败。
修正后的测试代码
把测试类里的参数定义和parse调用改成下面这样:
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("BlahBlah", myTestValue); // 注意:assertEquals的标准写法是(预期值, 实际值),这样失败时的提示更清晰 } }
额外优化提示
我还调整了assertEquals的参数顺序,标准写法是预期值在前,实际值在后,这样如果测试失败,错误信息会更直观地显示“预期XX,实际XX”。
内容的提问来源于stack exchange,提问作者Neil Mc Feely
相关产品推荐
相关产品推荐

