Spring 正在测试的Grails测试应用程序更新功能和测试打印问题

Spring 正在测试的Grails测试应用程序更新功能和测试打印问题,spring,unit-testing,grails,Spring,Unit Testing,Grails,我正在GGTS中运行Grails2.3.3 我正在Spring GGTS中成功地运行服务功能的单个单元测试 我希望能够使用这个单元测试来开发特定的功能——这种方法将真正加快我的开发速度 这意味着我需要对正在测试的服务功能进行更改,然后一次又一次地重新测试(毫无疑问,这是对我的编码技能的悲哀反思!)。问题是当我对逻辑或任何log.debug输出进行更改时,它在测试中没有通过。换句话说,测试将继续针对原始服务函数而不是更新的服务函数运行 为了让我强制它使用更新的功能,我发现唯一能做到这一点的方法就是

我正在GGTS中运行Grails2.3.3

我正在Spring GGTS中成功地运行服务功能的单个单元测试

我希望能够使用这个单元测试来开发特定的功能——这种方法将真正加快我的开发速度

这意味着我需要对正在测试的服务功能进行更改,然后一次又一次地重新测试(毫无疑问,这是对我的编码技能的悲哀反思!)。问题是当我对逻辑或任何log.debug输出进行更改时,它在测试中没有通过。换句话说,测试将继续针对原始服务函数而不是更新的服务函数运行

为了让我强制它使用更新的功能,我发现唯一能做到这一点的方法就是重新启动GGTS

我是否可以在GGTS中使用命令强制测试我正在测试的函数的最新版本

以下是我在GTT中使用的命令:

测试应用单元:UtilsService

我确实在函数更新后运行了一次清理,但没有成功:

测试应用程序-清洁

我还在努力从测试函数中获取额外的输出—引入“println”或“log.debug”命令会导致测试失败

了解有关测试语法的文档的良好链接是很有用的——我已经阅读了grails第12节关于测试的一般内容

以下是测试文件:

package homevu1

import grails.test.mixin.TestFor
import spock.lang.Specification

/**
* See the API for {@link grails.test.mixin.services.ServiceUnitTestMixin} for usage instructions
*/
@TestFor(UtilsService)
class UtilsServiceSpec extends Specification {

// to test utilSumTimes for example use the command : 
// test-app utilSumTimes

// test-app HotelStay

    def setup() {
    }

    def cleanup() {
    }

    void "test something"() {

    when:
    def currSec = service.utilSumTimeSecs( 27, 1, false)
    //println "currSec" , currSec

    then: 
    //println "currSec" , currSec
    assert currSec == "26"


        }
}
如果我取消对println行的注释,这些注释将不会显示,测试将失败

欢迎任何建议


-mike

我现在必须通过在命令提示符下运行grail(在MS Windows中)来实现这一点

在命令提示符下,我移动到grails项目的根文件夹/目录-在我的例子中:

cd C:\grails\workspace\rel_3.1.0\HomeVu

然后我键入grails以启动grails命令行会话

我使用的单元测试命令是:

测试应用程序-单元UtilsService-echoOut-EchoRR

也就是说,我仍然无法成功地将任何打印命令放入测试文件中,但我可以使用断言来确定任何问题

此外,服务函数的grails代码的最后一行log.debug的输出也无法显示。可能MS Windows存在一些输出缓冲问题

至少我现在可以进行一些快速的功能开发,通过对服务/功能代码进行更改,并根据一组已知的需求条件立即进行测试

希望这能帮助别人

-迈克