【问题标题】:ScalaTest console output in IntelliJ IdeaIntelliJ Idea 中的 ScalaTest 控制台输出
【发布时间】:2011-10-31 10:31:36
【问题描述】:

我对如何让 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

【问题讨论】:

  • 我不了解 Maven,但 ScalaTest 可以与 SBT 配合使用,输出到 IDEA 中的 SBT 控制台窗口(使用 SBT 插件)。你在使用 Maven 插件吗?
  • 谢谢。因为自从版本 11 Idea 为 FSC 提供了不错的支持,我停止使用 SBT,因为它在工作流中引入了几个额外的步骤,而且我发现它的管理方法并不比 Maven 更容易。现在我只使用 Maven 并像往常一样运行测试 Idea 运行配置。可能这个问题是 Idea 的测试运行适配器的错误。稍后会在他们的追踪器上发布它
  • println() 在这里工作,IDEA 10.5.2。什么是想法 110.3?究竟什么是 scala-10.0-snapshot?那是 scala-2.10.0-snapshot 吗?
  • idea 110.3 是一个 EAP 版本(参见 confluence.jetbrains.net/display/IDEADEV/IDEA+11+EAP),关于 scala 版本 - 感谢您指出这一点

标签: scala intellij-idea scalatest


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我刚刚经历了整个“被 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 存储库 - 我假设您将拥有它,因为我认为您需要它来编译。

    然后将名为 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 中看到的那样。

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

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

    希望对您有所帮助, 赛斯。

    【讨论】:

    • 我已经尝试了您的建议,但没有任何改变。还有什么你可能忘了提的吗?我也不太明白它与SwingApplication 有什么关系。
    • 我的测试也使用相同的技术 - 它也为我解决了问题。
    • Hrmm - 以前这对我不起作用,我认为我已经通过日志记录修复了它,但现在 System.out 也可以正常工作。我能想到的唯一改变是我将我的 IDEA 项目从我的源代码控制目录转移到一个完全外部的位置——除了字体和代码样式等之外,我没有更改任何 IDEA 设置。抱歉,这不起作用 - 请尝试禁用断点之类的东西 - 特别是“任何异常”断点给我带来了很多问题。
    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2021-12-07
    • 2023-02-01
    • 2016-03-29
    • 2013-05-07
    • 2016-04-13
    • 2016-08-07
    相关资源
    最近更新 更多