tko*_*wal 14 testing hibernate gradle
我正在用geb进行功能测试.
我的应用程序使用virgo进行部署,并使用HSQLDB存储数据.我想对这个工作版本的应用程序进行测试,但我想从空数据库开始,每次运行webtests.
我写了一个简单的bash脚本
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
Run Code Online (Sandbox Code Playgroud)
删除数据库并重新启动处女座.
但是,当我将它添加到我的build.gradle任务执行命令时永远不会结束.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?当我在控制台中运行此脚本时,它会快速返回(但处女座仍会写入控制台).
我试图在单独的线程中运行它,但我遇到以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
我也尝试在hibernate配置中设置'create-drop',但它也需要重启virgo.即使重新部署应用程序也无济于事.
如何使用空数据库运行webtests?
Lui*_*osa 15
那真是怪了
我创建了一个任务
task callCL(type: Exec) {
commandLine './cl.sh'
}
Run Code Online (Sandbox Code Playgroud)
调用cl.sh文件
#!/bin/sh
echo "starting "
./acl.sh &
sleep 10
./acl.sh &
Run Code Online (Sandbox Code Playgroud)
那叫acl.sh
#!/bin/sh
echo "I am not doing anything"
Run Code Online (Sandbox Code Playgroud)
它工作了!但是,虽然有一两件事,当你添加./acl.sh符号字符和你打电话从不同的线程启动gradle这个任务,还挺看起来像它的悬挂.我会从你的关闭调用中删除&并像这样开始
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh
$VIRGO_HOME/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)
无论如何你想在从关机到开始的同一个线程中等待,也不需要打电话给睡眠!
| 归档时间: |
|
| 查看次数: |
17018 次 |
| 最近记录: |