2016-05-06 113 views
4

我是一名java開發人員,發現自己正在修改一個常規測試,所以我很抱歉如果我對基本的常規概念和術語很不瞭解(我認爲我應該在這裏說的是封閉而不是方法?)在spock測試中創建助手方法,將不會作爲測試運行

無論如何,我的願望很簡單,我想創建一些輔助方法,可以在現有的常規測試中重用。比如只啓動/停止某些測試需要的資源(並會破壞其他資源),或者更快地執行通用測試步驟。

但是,似乎任何時候我嘗試創建一個像這樣的方法(閉包?),它會被spock作爲測試運行,從而以有趣的方式打破其他測試。有沒有簡單的方法來添加一個方法到我的Spock測試,而不是作爲一個測試運行?

它看起來像使它靜態可能工作,但有我想要的方法會觸及類的@shared變量,所以我不知道靜態是最好的選擇。

+1

如何得到你有什麼樣的工作例子,你想要什麼,爲什麼它不工作? –

+2

私有方法不會作爲測試執行。 – cjstehno

回答

7

我一直在廣泛使用特徵來編寫單元測試。

每個特徵將測試功能引入規範。

trait Helper { 
    def helpTests() { 
     println "Starting Test" 
     return 2 
    } 
} 

class MySpec extends Specification 
     implements Helper { 
    def "my spec"() { 
     when: 
     def n = helpTests() 

     then: 
     n == 2 
    } 
} 

顯然,特徵方法不會被執行。