【问题标题】:What are INFO logging conventions for Integration Tests?集成测试的 INFO 日志记录约定是什么?
【发布时间】:2015-08-04 11:01:22
【问题描述】:

我已经使用 WebDriver、JUnit 和 Drone 为一组 Web 应用程序编写了一系列集成测试。我现在正在删除 System.out.println 命令,这些命令在关键点显示有关集成测试当前状态的信息,并希望以不会像 System 那样降低性能的方式替换其中的一些命令。 out.println。目前,我正在使用 Logger 并使用 Level.INFO 记录关键点,同时使用 Level.WARNING 和 level.SEVERE 选项记录影响测试的异常。断言处理我的大部分日志记录。

由于我是一个缺乏经验的程序员并且对日志记录非常陌生,所以我想知道以下几点:

  • 是否有一组日志记录级别约定(更具体地说,使用 INFO 级别记录什么)?
  • 根据我的描述,我是否掌握了应该如何使用 Loggers?

非常感谢有关这种情况(集成测试)的答案,因为我相信我知道在应用程序中进行日志记录。

【问题讨论】:

    标签: java logging integration-testing convention


    【解决方案1】:

    integration tests 必须考虑的是detailed logging 的使用。当单元测试失败时,很容易理解为什么,因为范围很窄。当集成测试失败时,事情就没有那么简单了。

    因为根据定义,集成测试基于许多组件和特定数据流,因此识别故障原因并不总是那么简单。 [1]

    以及关于哪些信息的日志级别:

    • Trace - 最好的日志记录级别。可用于记录仅在真正的调试场景中相关的非常具体的信息,例如,记录每个数据库访问或每个 http 调用等。
    • 调试 - 主要帮助您调试程序的信息。例如,每次批处理例程清空其批处理或在磁盘上创建新文件等时记录。
    • Info - 一般应用流程,例如“启动应用”“连接数据库”“注册...”。简而言之,应该帮​​助任何观察者了解应用程序在一般情况下正在做什么的信息。
    • Warn - 警告可以恢复的错误。例如未能解析日期或使用不安全的例程。请注意,尽管我们仍应尝试遵守 fail fast 原则,而不是使用警告消息隐藏例如配置错误,即使我们可能由应用程序提供默认值。
    • 错误 - 表示经常无法恢复的错误。比如打开数据库连接失败。
    • 致命/严重 用于记录应用程序无法恢复的错误,这可能导致程序立即终止。 [2]

    如果这两个好的答案对您有所帮助,我希望这次合并。

    [1]:http://zeroturnaround.com/rebellabs/the-correct-way-to-use-integration-tests-in-your-build-process/

    [2]:堆栈溢出:What information to include at each log level?

    【讨论】:

    • 好的,谢谢。所以我的大多数错误/致命/严重问题都是由 JUnits 断言失败记录的。如果我理解正确,我可以使用 INFO 级别的日志记录在我的测试中的关键点上声明诸如“成功执行 i,值为 j 和 k”之类的内容?对于容易补救的事情,例如更改要上传的文件的文件路径/名称,是否适合记录警告,抛出更一般的异常,然后以更严重的日志级别使测试失败?
    • 你明白了 :) 这就是它的工作原理,但这不是一个真正的约定,你的问题是一个悬而未决的问题,日志就像一个解释...... :) 但是假设你尝试遵循这些规则,您的日志将有意义:)
    • 我确实看过 zeroturnaround 文章,但我觉得它没有太大帮助。感谢您的简洁回答!
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多