如何更改Play Framework 2“测试”设置以显示完整的堆栈跟踪?
我在Play框架中使用Java,并且我在通过IDE(IntelliJ)运行时通过了一些测试(function测试),但是当我通过控制台运行测试时失败了。
我的问题是测试日志中显示的堆栈跟踪只有2行,我需要完整的堆栈跟踪来查看那里发生了什么,我尝试了这里提到的任何设置组合: spec2设置都通过放置它们在build.sbt
或在命令行中提供它们。 似乎没有效果! 这是我的build.sbt
:
version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, filters ) logBuffered in Test := false testOptions += Tests.Argument(TestFrameworks.JUnit, "-v") testOptions += Tests.Argument("fullStackTrace","true") traceLevel := 50
有谁可以帮助我吗? 我正在使用Typesafe激活器(播放2.2.2)。 谢谢
在Play 2.3.2中,可以使用build.sbt中的-a
选项来build.sbt
:
testOptions += Tests.Argument(TestFrameworks.JUnit, "-a")
我用:
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q", "-a")
因为这提供了测试开始/完成的消息( -v
)并且抑制了传递的测试( -q
)的日志记录。
所有可用选项都可以在SBT JUnit界面中找到 :
-
-v
在日志级别“info”而不是“debug”上记录“test run started”/“test started”/“test run finished”事件。 -
-q
为成功测试抑制stdout。 Stderr通常会打印到控制台。 将Stdout写入缓冲区并在测试成功时丢弃。 如果失败,则将缓冲区转储到控制台。 由于Java中的stdio重定向是一个糟糕的问题(System.setOut()通过本机代码更改静态最终字段System.out),这可能不适用于所有方案。 Scala拥有自己的控制台,具有理智的重定向function。 如果在类路径上检测到Scala,则junit-interface也会尝试重新路由scala.Console的stdout。 -
-n
即使sbt报告它们受支持,也不要在输出中使用ANSI颜色。 -
-s
尝试解码堆栈跟踪和测试名称中的Scala名称。 如果类路径上没有匹配的Scala库,则静默回退到未解码的名称。 -
-a
显示AssertionErrors的堆栈跟踪和exception类名称(由JUnit中的所有assert *方法抛出)。 如果没有此选项,失败的断言不会打印堆栈跟踪或“java.lang.AssertionError:”前缀。 -
-c
不要为任何消息打印exception类名称前缀。 使用此选项,仅显示getMessage()的结果和堆栈跟踪。 -
+v
关闭-v。 优先于-v。 -
+q
关闭-q。 优先于-q。 -
+n
关闭-n。 优先于-n。 -
+s
关掉-s。 优先于-s。 -
+a
关闭-a。 优先于-a。 -
+c
关闭-c。 优先于-c。 -
--ignore-runners=
如果此列表中包含Runner类名,则使用@RunWith注释忽略测试。 默认值为org.junit.runners.Suite。 -
--tests=
仅运行名称与指定正则表达式之一匹配的测试(在逗号分隔列表中)。 不匹配的测试将被忽略。 只匹配单个测试用例名称,而不是测试类。 示例:对于测试MyClassTest.testBasic(),仅匹配“testBasic”。 使用sbt的test-only命令来匹配测试类。 -
-Dkey=value
在测试运行期间临时设置系统属性。 测试结束后,该属性将恢复为之前的值。 请注意,系统属性对于整个JVM是全局的,并且可以以非事务方式进行修改,因此您应该以串行方式运行测试,而不是并行执行任何其他依赖于已修改属性的任务。 -
--run-listener=
一个(用户定义的)类,它扩展了org.junit.runner.notification.RunListener。 创建此类的实例并将其添加到JUnit Runner,以便它将接收运行事件。 有关更多信息,请参见RunListener。 注意:这使用了test-classloader,因此需要在src / test或src / main中定义类,或者将其作为测试或编译依赖项包含在内 -
--include-categories=
应包含的以逗号分隔的类别类名列表。 仅运行具有一个或多个这些类别的测试。 -
--exclude-categories=
应排除的以逗号分隔的类别类名列表。 不会运行与这些类别中的一个或多个匹配的测试。
Play 2.2.3刚刚发布。 包含针对bug 2535的修复,我认为这可能是您所看到的问题。
https://groups.google.com/forum/#!topic/play-framework/KP1_DbhcxlU