11
我正在做geb的功能測試。在gradle中執行bash腳本
我的應用程序使用處女座進行部署,並使用HSQLDB來存儲數據。我想對這個工作版本的應用程序進行測試,但我想從空數據庫開始,每次運行webtest時。
我寫了一個簡單的bash腳本
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
其刪除數據庫,並重新啓動處女座。
但是,當我將它添加到我的build.gradle任務執行命令永遠不會結束。
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
這是爲什麼?當我在控制檯中運行這個腳本時,它會很快返回(但處女座仍然寫入控制檯)。
我試圖在單獨的線程中運行它,但我遇到了以下錯誤:
task cleanDBThread()<<{
def cleanDBThread1 = Thread.start {
cleanDB.execute()
}
sleep 10000
println "wake up!"
}
Exception in thread "Thread-32" java.lang.IllegalStateException:
Cannot start long running operation, as the task artifact state cache
(/home/tomasz/ares/.gradle/1.0-milestone-9/taskArtifacts) has not been locked.
我也試着設置「創建降」在Hibernate的配置,但也需要重啓處女座。即使重新部署應用程序也無濟於事。
我應該怎麼做才能運行具有空數據庫的webtest?
如果從命令末尾刪除&符號會發生什麼?我看不到您需要在後臺執行您的命令。這是否解決這個問題? – Jared