2017-02-24 7 views
0

Ich habe eine Feder-basierte Groovy-Anwendung, die als "Framework" für den TestNG-Tests verwendet wird.Access Instanz der Klasse in TestNG in groovy laufen

Hier ist ein Teil meiner Anwendung

@RestController 
class Framework{ 
    def instance 

    @RequestMapping("/test/{name}") 
    @ResponseBody 
    String home(@PathVariable String name) { 
    def sourceFile = new File("./tests/${name}/test.groovy") 
    groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(sourceFile) 
    instance = groovyClass.newInstance() 

    def testNG = new TestNG() 
    testNG.setOutputDirectory("./results/${name}") 
    XmlSuite suite = new XmlSuite() 
    suite.setName(name) 

    XmlTest test = new XmlTest(suite) 
    test.setXmlClasses([new XmlClass(groovyClass)]) 
    testNG.setXmlSuites([suite]) 
    testNG.run() 

    def resultFile = new File("./results/${name}/emailable-report.html") 
    return resultFile.text 
    } 

    @RequestMapping("/status") 
    public String getStatus(){ 
     return instance.currentMethod 

    } 
} 

wie

Mein Beispiel Testdatei
class T1{ 
    public String currentMethod 

    @Test 
    public void test() { 
    //execution 
    } 

    @Test 
    public void test2(){ 
    //execution 
    throw new Exception() 
    } 
} 

Es funktioniert gut, wie es ist, aber ich wollte implementieren einige zusätzliche Informationen zu können, schaut überprüfen welche Methode läuft gerade durch Hinzufügen von etwas mehr Code

Allerdings bin ich n ot der Lage, die Instanz als

instance = groovyClass.newInstance() 

schafft eine Instanz und

testNG.run() 

schafft eine andere zuzugreifen, die durch Drucken einige mesages in construcor bestätigt werden kann.

Gibt es eine Idee, wie kann ich auf TestNG zugreifen oder wie man eine bestehende Instanz in TestNG Runner übergibt? Jedes Mal, wenn ich versuche, auf localhost zuzugreifen: 8080/status gibt es null zurück.

Antwort