5

我对如何让 IDEA 输出从测试到控制台的任何内容感到非常沮丧。我尝试了不同版本的 Scala、ScalaTest 和 IDEA——没有任何帮助。目前我的设置是:scala-2.10.0-snapshot,scalatest_2.9.1-1.6.1,idea 110.3。该项目由maven管理。有人可以帮忙吗?我期待看到类似的东西:http ://www.scalatest.org/getting_started_with_feature_spec

4

2 回答 2

3

看起来这是 Idea Scala 插件的问题。后来的构建开始将一些输出放入控制台,但并不是所有预期的结果。有关插件的最新版本,请查看http://confluence.jetbrains.net/display/SCA/Scala+Plugin+Nightly+Builds+for+Nika

于 2011-10-31T02:31:36.187 回答
1

我刚刚经历了整个“被IDEA惩罚”的事情,我有这个解决方案给你......

Logbackslf4s添加到您的 POM:

<dependency>
    <groupId>com.weiglewilczek.slf4s</groupId>
    <artifactId>slf4s_${scala.version}</artifactId>
    <version>1.0.7</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>0.9.30</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.30</version>
</dependency>

注意:
我在 slf4s artifactId 中使用了 ${scala.version} - 确保你已经定义了这个或者用 2.9.1 或类似的东西替换它。
另外-您还需要可用于依赖项的scala-tools repo-我假设您将拥有它,因为我认为您需要它来编译。

然后将一个名为 logback.xml 的文件添加到包含以下内容的资源文件夹中:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date,%d{HH:mm:ss.SSS},%thread,%-5level,%logger{36},%line,%msg%n</pattern>
        </encoder>
    </appender>

    <root level="TRACE">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

我的模式可能有点奇怪 - 它实际上来自一个文件附加程序,它以 CSV 的形式输出,我可以轻松地在 Excel 中打开和绘制图表。

然后像这样在您的应用程序中扩展特征 Logging:

import swing._
import com.weiglewilczek.slf4s.Logging

object App extends SwingApplication with Logging {

    override def startup(args: Array[String]) {

        logger.info("Starting init...")
    }
}

信息消息“正在启动 init...”以及一堆其他内容应该出现在控制台窗口中。

Logback 和 slf4s 是我链接到的主题。

重要且很棒:

我不记得它叫什么了,但是你用来发布消息的日志记录方法都有像 info(message: => String) 这样的签名——正如你在logger.scala中看到的那样。

这意味着如果未在配置文件中启用相关级别的日志记录,则您传递给它们的表达式或块将根本不会被执行。

所以它只在关闭时向代码添加一个方法调用和一个标志检查 - 这是非常甜蜜的恕我直言:)

希望有帮助,赛斯。

于 2011-10-14T05:44:20.477 回答