集成测试中的Grails引导程序

Tom*_*Tom 5 grails integration-testing bootstrapping

我试图将一些测试数据插入到我的数据库中,一个名为BootStrapTest的类可以完成这项工作.

在我的BootStrap.groovy文件中它被称为这样

environments {
            test {
                println "Test environment"
                println "Executing BootStrapTest"
                new BootStrapTest().init()
                println "Finished BootStrapTest"
            }

        }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行集成测试时,此代码不会执行.我已经读过集成测试应该引导,所以我很困惑.

我看到一些侵入性的解决方案,如修改TestApp.groovy剧本,但我想有过的conf道路来实现这一目标.也阅读这个问题这个问题,但并没有得到它.

也许我误解了一些东西,我在grails测试方面遇到了很多麻烦.如果它给表带来任何东西,我使用Intelli JIdea作为IDE.

任何想法将不胜感激.

提前致谢

Ein*_*nar 10

必须从Init闭包调用所有引导代码.所以这个版本应该工作:

import grails.util.Environment

class BootStrap {  
    def init = { servletContext ->
        // init app
        if (Environment.current == Environment.TEST) {
            println "Test environment"
            println "Executing BootStrapTest"
            new BootStrapTest().init()
            println "Finished BootStrapTest"

        }
    }

    def destroy = {
        // destroy app
    }

}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用单独的引导程序文件来插入测试数据,而不是调用BootStrapTest.init().grails-app/conf文件夹中名为*BootStrap.groovy的任何类(例如,TestBootStrap.groovy)都在bootstrap阶段运行.请参阅http://www.grails.org/Bootstrap+Classes


Aar*_*ers 0

在 BootStrap.groovy 中你可以尝试这样的事情

if (!grails.util.GrailsUtil.environment.contains('test')) {
    log.info "In test env"
    println "Test environment"
    println "Executing BootStrapTest"
    new BootStrapTest().init()
    println "Finished BootStrapTest"
} else {
    log.info "not in test env"
}
Run Code Online (Sandbox Code Playgroud)