2017-02-24 74 views
0

我有一個基於spring的groovy應用程序,用作運行TestNG測試的「框架」。TestNG中的類的訪問實例在groovy中運行

這裏是我的應用程序的一部分

@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 

    } 
} 

我的示例測試文件看起來像

class T1{ 
    public String currentMethod 

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

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

它正常工作,因爲它是,但我想實現一些附加信息,能夠檢查哪種方法當前通過添加一些代碼來運行

但是我n OT能夠訪問該實例作爲

instance = groovyClass.newInstance() 

創建一個實例,並

testNG.run() 

創建另一個可以通過在construcor打印一些mesages確認。

ctor 
ctor 
[TestNG] Running: 
    Command line suite 


=============================================== 
Total tests run: 2, Failures: 1, Skips: 0 
=============================================== 

任何想法,我怎麼能訪問istance通過TestNG的或如何建立比現有的實例傳遞到TestNG的亞軍? 每次我嘗試訪問本地主機:8080 /狀態,它都會返回null。

回答