用于测试结果的SBT控制台编码

时间:2014-04-06 12:13:22

标签: sbt scalatest

我有一个SBT + Scalatest项目。现在我的测试登录控制台,如下所示:

[info] - should do something *** FAILED *** 
[info] java.lang.Exception: ╧ЁштхЄ!

这对原因不是很有用。异常文本在Cyrillic中,所以我必须在控制台流上设置cp866 charset才能正确显示它。

我试过

Console.setOut(new PrintStream(System.out, true, "cp866"))

但是SBT忽略了它。似乎SBT构建了自己的用于记录各种消息的流,但我无法找到改变它的位置和方式..

有一个way来添加自定义记录器,但这太过分了。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 我可以创建一个自定义LogManager

val customLogManager = LogManager.defaultManager(ConsoleOut.printStreamOut(new java.io.PrintStream(System.out, true, "cp866")))

并在项目设置中设置:

logManager := customLogManager

虽然,我不确定它是否是最佳解决方案。一个缺陷是您必须为每个项目提供logManager设置。从构建设置继承它不会因某种原因而起作用。