正在测试Grails test-app更新功能并测试打印问题

时间:2015-03-06 14:15:00

标签: spring unit-testing grails

我在GGTS中运行grails 2.3.3。

我在Spring GGTS中成功运行了一个服务功能的单元测试。

我希望能够使用这个单元测试来开发特定的功能 - 这样的方法将真正加快我的发展。

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

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

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

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

  

test-app unit:UtilsService

我在功能更新后运行干净但没有成功:

  

test-app -clean

我也在努力从测试功能中获得额外的输出 - 介绍' 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

1 个答案:

答案 0 :(得分:0)

我现在通过从命令提示符(在MS Windows中)运行grail来实现此功能。

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

  

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

然后我输入grails来启动grails命令行会话。

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

  

test-app -unit UtilsService -echoOut -echoErr

那说我仍然无法在测试文件中成功放置任何打印命令 - 但我可以使用断言来确定任何问题。

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

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

希望这有助于其他人。

-Mike