2
我試圖從Grails 2.0.3升級到2.2.1。我有兩個問題:1)單元測試失敗,2)集成測試失敗。從Grails 2.0.3升級到2.2.1:測試失敗
第一個問題是缺少方法例外:
| Failure: testSendingBlankDirectionsAreOK(happytrails.RouteControllerTests)
| java.lang.reflect.InvocationTargetException
at happytrails.RouteControllerTests.testSendingBlankDirectionsAreOK(RouteControllerTests.groovy:163)
Caused by: org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: happytrails.Route.addToDirections() is applicable for argument types: (happytrails.Direction) values: [null]
Possible solutions: getDirections()
測試如下:
void testSendingBlankDirectionsAreOK() {
populateValidParams(params)
params['directions[0].sortNumber'] = ''
params['directions[0].instruction'] = ''
def route = new Route(params)
assert route.save() != null
params.id = route.id
controller.update()
println route.errors
assert response.redirectedUrl == "/route/show/$route.id"
assert flash.message != null
}
第二個問題似乎被蓋布造成的,並嘗試使用Chrome驅動程序。
| Running 11 spock tests... 6 of 11
| Failure: signup as a new user(happytrails.AuthenticatedUserSpec)
| org.openqa.selenium.WebDriverException: Unable to either launch or connect to Chrome. Please check that ChromeDriver is up-to-date. Using Chrome binary at: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 45.66 seconds
Build info: version: '2.27.0', revision: '18259', time: '2012-12-05 11:30:53'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.2', java.version: '1.7.0_04'
Driver info: org.openqa.selenium.chrome.ChromeDriver
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:533)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:107)
at happytrails.AuthenticatedUserSpec.signup as a new user(AuthenticatedUserSpec.groovy:25)
我看過this pull request關於如何配置東西來自動下載ChromeDriver。然而,我在我的測試中實例化如下:
def "signup as a new user"() {
given:
def server = SimpleSmtpServer.start(1025)
driver = new ChromeDriver()
有沒有更好的方法來實例化ChromeDriver的單個測試?
如果我將方向添加到@Mock中,並修改我的testSendingBlankDirectionsAreOK方法以使用save(failOnError:true),我發現它的失敗b/c方向上存在驗證錯誤。這似乎是合乎邏輯的,不確定爲什麼它與Grails 2.0.3一起工作。 – 2013-03-15 16:08:13
我的Chrome驅動程序無法正常工作的原因是因爲我的GebConfig.groovy在一個包中,而不是在測試/功能中。 – 2013-03-15 16:22:52