Ich lade eine DatabaseDrivenSpec.groovy in einer Feder-Controller-Methode.aber ich weiß nicht, wie die Methode im groovy Skript invokeMethod. kann mir jemand einen Rat geben?Wie kann ich einen Spock-Groovy-Test in Java-Methode
@Controller
@RequestMapping("/spock")
public class PmsTreeConfluentService {
private final Log logger = LogFactory.getLog(PmsTreeConfluentService.class);
@RequestMapping(value = "/test/spock", method = RequestMethod.GET)
public @ColumnResponseBody
List runTestMock() throws InstantiationException, IllegalAccessException, CompilationFailedException, IOException {
GroovyClassLoader classLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader());
File sourceFile = new File("test/groovy/DatabaseDrivenSpec.groovy");
Class testGroovyClass = classLoader.parseClass(new GroovyCodeSource(sourceFile));
GroovyObject instance = (GroovyObject)testGroovyClass.newInstance();//proxy
// instance.invokeMethod(arg0, arg1)
instance = null;
testGroovyClass = null;
return null;
}
}
mit dem Führungs http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html
def binding = new Binding()
def engine = new GroovyScriptEngine([tmpDir.toURI().toURL()] as URL[])
while (true) {
def greeter = engine.run('ReloadingTest.groovy', binding)
println greeter.sayHello()
Thread.sleep(1000)
}
ich möchte nur den Zugriff auf http://127.0.0.1:8080/spock/test/spock dann den DatabaseDrivenSpec.groovy Testfall ausgeführt werden.
Ihr PmsTreeConfluentService sieht wie ein Produktionscode aus, der normalerweise nicht vom Testcode abhängig ist. Was versuchst du zu erreichen? –
Entschuldigung, es ist eine Java-Methode.Ich nur einfügen es in diesem Format kann es nicht.Wenn ich den obigen Code definieren. Ich möchte nur auf http://127.0.0.1:8080/spock/test/spock zugreifen dann den DatabaseDrivenSpec.groovy Testfall ausführen –
Könnte ich fragen, warum? Müssen Sie den Test auch aus dem Dateisystem statt aus dem Jar laden? –