小编Mik*_*nov的帖子

使用specs2 + scalalogging对单元测试记录器消息进行测试

我在这里有一点问题,实在不知道如何为记录器消息实现单元测试.当然,这听起来有点奇怪,但对我来说这是一个非常有趣的话题.但让我更具体一点.

我有一些scala类和测试规范:

class Testable extends Logging {
  def method() = {
    // some method calls
    logger.info("Message1")
  }
}

class TestableSpec extends Specification with ShouldMatchers with Mockito {
  "Testable instance" should {
    // some important tests 

    "print proper log message during method call" in {
      // And how to test that logger really prints proper message ("Message1")? 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是拦截底层记录器引擎消息,但由于在Testable类中使用mixins,实现起来似乎有点困难,因此任何做这些事情的想法都会非常有用.

更新: 我最终实施了一项测试,并决定与社区分享我的解决方案.我们不能直接模拟scalalogging.Logger类,因为它是最终的,但我们仍然可以模拟底层的slf4j Logger.澄清一个想法:

class Testable extends Logging {
    def foo() = {
        // ...
        logger.info("Foo has been called")
    }
} …
Run Code Online (Sandbox Code Playgroud)

logging unit-testing scala

14
推荐指数
1
解决办法
5264
查看次数

标签 统计

logging ×1

scala ×1

unit-testing ×1