我定义了一个groovy脚本,其中包含一个内部类
foo.groovy:
// does something
Bar {
int foobar() {
return 1
}
}
// Does something else
为什么我在脚本中定义的类是一个较长的故事,但这是必要的,除非我想对项目结构进行大的重新设计(并且客户不想为此付费)
无论如何,我有一个GroovyTestCase,我想从这里调用这个类。
我想做这样的事情:
class Test extends GroovyTestCase {
void testSomething() {
Bar bar = new Bar()
assertTrue(1, bar.foobar())
}
}
是否可以引用groovy脚本中定义的类?如果是这样,怎么样?
答案 0 :(得分:3)
foo.groovy
println "foooo 01"
class Bar {
int foobar() {
return 1
}
}
println "foooo 02"
Test.groovy(你可以把它作为一个班级)
def shell = new GroovyShell()
//parse script
def script = shell.parse(new File("/11/foo.groovy"))
//get class loader used for script parsing
def cl = shell.getClassLoader()
//get list of parsed/loaded classes
println cl.getLoadedClasses() // [class Bar, class foo]
def bar = cl.loadClass('Bar').newInstance()
println bar.foobar() // 1
但要注意!如果您的foo.groovy
脚本加载了一些您想要在testcase中访问的其他类,则必须通过相同的shell类加载器执行此操作,否则可能会出现奇怪的错误,如could not assign String to String
...