登录Play 2.3的单元测试

时间:2014-08-07 12:29:05

标签: logging playframework

使用Logger.error("an error")努力在Play 2.3的单元测试中获取任何日志记录输出。我已经尝试了所有似乎都过时的these examples

我最接近的是build.sbt,其中包含以下内容:

testOptions in Test += Tests.Argument("-Dlogger.resource=conf/test-logger.xml")

这会导致test-logger.xml文件配置记录器,但我仍然无法从任何测试中获得输出。

有人在Play 2.3中有过这方面的成功吗?

临时解决方法

我目前正在使用一个快速的util类来处理它,直到它被修复。这里添加,因为它可能对其他人有用。

public class Logger {

    public static void debug(String message) {
        System.out.println(String.format("[debug] %s", message));
    }

    public static void info(String message) {
        System.out.println(String.format("[info] %s", message));
    }

    public static void warn(String message) {
        System.out.println(String.format("[warn] %s", message));
    }

    public static void error(String message) {
        System.err.println(String.format("[error] %s", message));
    }
}

3 个答案:

答案 0 :(得分:9)

@Jamesinchina更新了他的答案(在我引用的问题中)以支持 Play Framework 2.3

  

我编辑了删除play.Project的答案,该项目已在2.3.x中删除,但其余的仍然有效 - 我们目前正在项目中使用它。

conf/test-logger.xml中添加build.sbt文件和以下行可以解决问题:

javaOptions in Test += "-Dlogger.file=conf/test-logger.xml"

Updated answer

答案 1 :(得分:5)

由于Play 2.5一切都是通过logback配置的,所以我们可以依靠默认的logback机制来查找配置:http://logback.qos.ch/manual/configuration.html

这意味着在<project_or_module>/test/resources文件夹中可以放置一个名为logback-test.xml的文件,该文件优先于默认的logback.xml,因为在运行测试时它们都在类路径上。

答案 2 :(得分:1)

您可以尝试将此添加到build.sbt:

testOptions + = Tests.Argument(TestFrameworks.JUnit,&#34; -v&#34;,&#34; -q&#34;)

查看此页面:https://groups.google.com/forum/#!topic/play-framework/WiqpjWZ_Qt0