我使用groovy作为独立的脚本语言(不编译它)并且正在努力解决
使用package
关键字构建多个文件,但仍然可以在其他文件中import
文件。这方面的一个例子如下:
目录结构:
+-- Project
+-- Example.groovy
+-- ExampleTest.groovy
使用当前设置,没有任何package
个关键字,我可以拥有以下内容:
// Example.groovy
class Example {
String message
def Example(input = "placeholder") {
this.message = input
}
}
//ExampleTest.groovy
import Example
class ExampleTest extends GroovyTestCase {
void testInitialiserWithoutArg() {
def object = new Example()
assertEquals(object.message, "placeholder")
}
void testInitialiserWithArg() {
def object = new Example("test")
assertEquals(object.message, "test")
}
}
有了这个,我可以在项目目录中添加一个脚本来使用示例类或运行测试
在groovy ExampleTest.groovy
的命令行上(groovy bin在PATH中)。
然后我如何将Example
类放入包中,以便脚本可以导入
示例类,我可以在命令行上运行单元测试?例如:
+-- Project
+-- some
| +-- random
| +-- main
| | +-- Example.groovy
| +-- test
| +-- ExampleTest.groovy
+-- UseExample.groovy
我向package some.random
和Example.groovy
添加了ExampleTest.groovy
,但即使是。{
Example.groovy
和ExampleTest.groovy
只是在/Project/some/random
目录中,我无法做到
似乎在import
中Example
ExampleTest.groovy
类来运行测试
命令行或如何在单独的脚本中导入整个some.random
包
UseExample.groovy
。
这是可能的,还是我必须先编译包才能使用它?
答案 0 :(得分:1)
你必须配置你的ide来开始/测试你的项目。如果你想以bin/groovy
的方式进行,那么这里有一个简单的命令行:
java.exe -classpath ".\embeddable\groovy-all-2.4.11.jar;.\my\test;.\my\main" groovy.ui.GroovyMain .\my\test\pack\Test.groovy
其中:
\嵌入\ Groovy的全2.4.11.jar
groovy libs的路径
\我\测试
测试类/脚本的路径
\我\主
主要课程/脚本的路径
groovy.ui.GroovyMain
groovy脚本启动器/加载器
。\ my \ test \ pack \ Test.groovy
将要执行的入口点脚本。 即使它在类路径中,您也必须指定当前目录路径的完整或相对。
file struct:
A.groovy
package pack
public class A{
def f(p){
println p
}
}
Test.groovy
package pack
new A().f("hello")
答案 1 :(得分:0)
Daggett的回答有效,但要求import
编辑(并且在groovy中可用)的所有其他库都添加到classpath
列表中。然后我发现groovy
可执行文件也有一个classpath
参数,所以下面是Daggett的简化版本的答案,当时groovy脚本没有运行{{1可执行文件:
java
我还注意到类路径需要指向包的顶层目录,例如:
groovy -classpath "./path/to/ExampleClass.groovy" ./scriptThatUsesExampleClass.groovy
+-- Project
+-- main
| +-- my
| +-- example
| +-- ExampleClass.groovy
+-- test
| +-- my
| +-- example
| +-- TestExampleClass.groovy
+-- UseExampleClass.groovy
包含UseExampleClass.groovy
,java命令为:
import my.example.ExampleClass
对于groovy二进制文件:
path\to\Project:
> java -classpath %GROOVY_HOME%\lib\*;main groovy.ui.GroovyMain UseExampleClass.groovy
使用path\to\Project:
> groovy -classpath main UseExampleClass.groovy
导致-classpath main\my\example
。