java - 如何使用 Spock 测试单个类的 Logger?

标签 java logging groovy spock

所以我有一节课:

ExtractJustAddedObjectTypeIDsBolt {
      private static Logger logger = LoggerFactory.getLogger(ExtractJustAddedObjectTypeIDsBolt.class);

      public void someMethod() {
        logger.error("this is an error");
      }
}

ClassOneTest extends Specification {
    ExtractJustAddedObjectTypeIDsBolt bolt;

    void setup() { 
      this.bolt = new ExtractJustAddedObjectTypeIDsBolt();
    }

    void cleanup() { // run after every feature method

    }

    def "test someMethod"() {
      given:

      when:
      bolt.someMethod();

      then:
      bolt.logger.error("this is an error");
    }
}

但这就是我得到的错误:

199  [main] ERROR member.bolt.ExtractJustAddedObjectTypeIDsBolt - this is an error

Too few invocations for:

1 * bolt.logger.error("this is an error")   (0 invocations)

Unmatched invocations (ordered by similarity):

最佳答案

尝试:

   def "test someMethod"() {
      given:
          def logger = Mock(Logger)
      and:
          bolt.logger = logger
      when:
          bolt.someMethod()
      then:
          1 * logger.error("this is an error")
    }

您需要首先模拟 Logger。

关于java - 如何使用 Spock 测试单个类的 Logger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560252/

相关文章:

python - 在线程中使用 Flask current_app.logger

Java:在 JUnit assert* 中使用记录器

grails - 呈现与 Action 同名的 View 时,Grails重定向循环错误

unit-testing - 在Grails单元测试中使用mockDomain后是否需要删除metaClass?

java - 刷新 JFrame 上的图像

java - 无法理解 Java 通配符的用法?

python - 在Python中的logging.conf中设置日志记录级别

eclipse - 在Eclipse中突出显示某些单词

java - 如何将自定义 SSL 证书验证添加到 osmdroid 的 MapTileDownloader?

java - 从摄像头并行录制视频到 Android 上的 OpenCV 处理