2015-11-20 117 views
2

如何以編程方式跳過Spock框架中的測試?我知道我可以跳過annotate a test with @Ignore,或者使用@IgnoreIf跳過基於環境變量等的測試。但是有沒有辦法運行任意代碼來決定是否應該運行測試?以編程方式跳過Spock中的測試

例如,假設我有一個集成測試必須連接到第三方服務的沙箱環境。服務沙箱環境中的中斷會導致測試失敗。假設我已經編寫了一個方法canConnectToService來檢查測試是否能夠連接到這個服務,那麼如果canConnectToService()返回false,我該如何編寫一個測試,該測試將被跳過?

回答

3

使用JUnit的Assume class。具體而言,如果第三方服務不可用,您可以在測試開始時編寫Assume.assumeTrue(canConnectToService())以跳過測試。如果canConnectToService()返回false,則此方法將拋出AssumptionViolatedException,並且Spock將忽略受JUnit兼容性影響的AssumptionViolatedException中斷的測試(請參閱this bug report)。