作为 ./gradlew 检查的一部分,如何运行我的 grails-5 应用程序的黄瓜测试?

Posted

技术标签:

【中文标题】作为 ./gradlew 检查的一部分,如何运行我的 grails-5 应用程序的黄瓜测试?【英文标题】:How can I run my grails-5 app's cucumber tests as part of ./gradlew check? 【发布时间】:2022-01-11 07:00:50 【问题描述】:

我正在编写一个 Grails-5,并且我正在使用 Cucumber 进行 BDD。我已经按照以下教程进行操作:https://www.baeldung.com/java-cucumber-gradle

我可以使用以下方法运行我的单元测试:

$ ./gradlew check

我可以通过在一个 shell 中启动服务器来运行我的黄瓜 BDD 测试:

$ ./gradlew server:bootRun

并在另一个中调用测试:

$ ./gradlew cucumberCli

是否可以将build.gradle 配置为让./gradlew check 运行单元测试,然后启动服务器,然后运行黄瓜测试,最后将服务器关闭?

如果可能的话,如果黄瓜基础设施能够在每次测试之间启动和停止服务器会更好。这样,每个测试都会以已知状态开始。

【问题讨论】:

【参考方案1】:

我设法通过在我的StepDefinitions.groovy 文件中添加@Before@After 步骤来完成这项工作:

    def serverProcess

    private String getBaseUrl() 
        return "http://localhost/"
    

    @Before
    public void startServer() 
        try 
            serverProcess=Runtime.getRuntime().exec("../gradlew bootRun")
         catch (IOException e) 
            e.printStackTrace()
        

        def done = false
        while(!done) 
            try 
                done = new URL(getBaseUrl()).openConnection().getResponseCode() == 200
             catch(Exception e) 
                Thread.sleep(500)
            
        
    

    @After
    public void stopServer() 
        serverProcess.destroy()
    

【讨论】:

以上是关于作为 ./gradlew 检查的一部分,如何运行我的 grails-5 应用程序的黄瓜测试?的主要内容,如果未能解决你的问题,请参考以下文章

错误记录在 Android Studio 的 Terminal 终端执行 gradlew 报错 ( 无法将“gradlew”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称 )

找不到 gradlew 命令?

运行gradlew测试时如何限制某些包的日志?

禁用插件并使用./gradlew:app:dependencies检查依赖关系树

如何使用 gradlew 命令分别执行 Espresso 多个测试类

如何执行gradlew.bat文件