在Grails JUnit测试用例中记录信息的正确方法是什么?

时间:2014-05-23 08:22:14

标签: grails junit intellij-idea log4j slf4j

我最近开始使用Grails进行项目。 我在Intellij Idea环境中工作。

我正在编写单元测试以测试我创建的服务。

我无法记录测试用例中的信息。无论我使用的日志级别如何,控制台中都不会显示任何消息。

这是我在Config.groovy中的log4j配置:

log4j = {
    appenders {
        console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L %x - %m%n')
    }

    root {
        info    'a1'
        additivity = true
    }

    error  'org.codehaus.groovy.grails.web.servlet',        // controllers
           'org.codehaus.groovy.grails.web.pages',          // GSP
           'org.codehaus.groovy.grails.web.sitemesh',       // layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping',        // URL mapping
           'org.codehaus.groovy.grails.commons',            // core / classloading
           'org.codehaus.groovy.grails.plugins',            // plugins
           'org.codehaus.groovy.grails.orm.hibernate',      // hibernate integration'org.springframework',
           'org.springframework',
           'org.hibernate',
           'org.apache',
           'net.sf.ehcache.hibernate'

    debug  'grails.app.controllers'
           'hibernate.SQL'
            'grails.app'
}

我还必须提到这样一个事实:当我运行测试用例时,我在开始时会得到以下信息,但从我所看到的只是一个警告,它不应该影响测试用例。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/abujdei/grails/grails-2.3.7/dist/grails-plugin-log4j-2.3.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/abujdei/grails/grails-2.3.7/lib/org.slf4j/slf4j-simple/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http:/www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.GrailsSlf4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http:/logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我现在几个小时都在苦苦挣扎。

2 个答案:

答案 0 :(得分:2)

在Intellij的Grails视图中,右键单击可测试节点(包,类或方法)时,在运行下,您应该有两个选项:

  • 使用junit runner(标准测试图标,不知道您的grails配置)
  • 使用grails test-app命令(grails图标,我想你想使用这个。)

请注意,如果您的grails版本默认使用分叉测试执行,则必须(source):

  • 禁用它:grails-app / conf / BuildConfig.groovy中的grails.project.fork.test = false
  • <Intellij_install_dir>/plugins/Grails/grails-rt.jar复制到您项目的lib。

答案 1 :(得分:0)

您应该在root-block中引用控制台appender:

// ...
root {
  info 'stdout'
  additivity = true
}
// ...

我已经在snipplr的不同环境中记录了一个示例,而不是使用控制台appender,但它可能仍然有用。