如何在Java程序中运行的Groovy脚本中运行GroovyTestCase单元测试?
这里的用法是在SoapUI中运行GroovyTestCases。
鉴于:
class ExperimentClassTest extends GroovyTestCase {
void testExperimentClass() {
assertEquals( new ExperimentClass(name: "Hi").name, "Hi" )
}
}
class ExperimentClass {String name}
然后(工作):
C:\groovytest>\groovy2.6.0\bin\groovy .\ExperimentClassTest.groovy
.
Time: 0.041
OK (1 test)
但鉴于此(由SoapUI运行的Groovy脚本的内容):
evaluate (new File ('C:/groovytest/ExperimentClassTest.groovy'))
然后(没有工作):
groovy.lang.MissingMethodException: No signature of method: ExperimentClassTest.main()
也尝试过:
new ExperimentClassTest().run()
...它确实返回了一个junit.framework.TestResult,但是测试还没有实际运行......
new ExperimentClassTest().run().failures().collect {it}
返回
"TestCase.fName cannot be null"
答案 0 :(得分:0)
这应该有效:
new GroovyShell().run( new File('./ExperimentClassTest.groovy'), [] )
实际上当您将其作为groovy .\ExperimentClassTest.groovy
调用GroovyShell,并按类检测如何运行它
https://github.com/groovy/groovy-core/blob/master/src/main/groovy/lang/GroovyShell.java#L295
最后,GroovyShell使用大约此代码来运行测试用例类:
def scriptClass = this.getClass().getClassLoader().parseClass( new File('./ExperimentClassTest.groovy') )
def suite = new junit.framework.TestSuite(scriptClass)
def result = junit.textui.TestRunner.run(suite)