为什么来自Groovy Grape的@Grab注释在脚本中起作用,但在单元测试类中却不起作用

问题描述

我正在尝试在Groovy中编写CLI命令。我也在尝试采用TDD方法

我的第一个测试将仅仅是一个以成功代码退出的命令。我作弊了一点,首先在 ssbgt.groovy

中创建了命令
@Grab('info.picocli:picocli-groovy:4.5.1')
@picocli.groovy.PicocliScript
import static picocli.CommandLine.*
import groovy.transform.Field

@Option(names= ["-h","--help"],usageHelp= true,description= "Show this help message and exit.")
@Field boolean helpRequested

println "Hello World"

使用$ groovy ssbgt.groovy可以正常工作。

然后我尝试创建一个测试

import static picocli.CommandLine;

class SimpleTest extends GroovyTestCase {
    void testGroovy() {
        ssbgt ssbgt = new ssbgt();
        //CommandLine cmd = new CommandLine(ssbgt);
        //cmd.execute();
        assert(1 == 1);
    }
}

这无法运行

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup Failed:
C:\Users\aglauser\code\dev-tools\configTransform\SimpleTest.groovy: 1: unable to resolve class picocli
 @ line 1,column 1.
   @Grab('info.picocli:picocli-groovy:4.5.1')
   ^

1 error

为什么Grape无法在测试脚本中找到依赖关系,但可以在CLI命令脚本中工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)