java - 集成测试的 INFO 日志记录约定是什么?

标签 java logging integration-testing convention

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

由于我是一名经验不足的程序员,并且对日志记录非常陌生,因此我想知道以下问题:

  • 是否有一组日志记录级别约定(更具体地说,使用 INFO 级别记录哪些内容)?
  • 从我的描述中,我是否掌握了应该如何使用 Logger?

关于这种情况(集成测试)的答案将不胜感激,因为我相信我知道应用程序内的日志记录。

最佳答案

对于集成测试,必须考虑的是详细日志记录的使用。当单元测试失败时,很容易理解原因,因为范围非常狭窄。当集成测试失败时,事情就不那么简单了。

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

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

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

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

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

[2]:Stackoverflow:What information to include at each log level?

关于java - 集成测试的 INFO 日志记录约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31807530/

相关文章:

java - 没有如果的计算器

java - 如果我不关闭 java 中的 BufferedReader 会发生什么? (多线程程序中的流式读取)

python - 如何使用 Python 在 Sqlite3 中记录查询?

java - 即使我们必须迭代数组,如何从java中的数组中删除元素,或者我们可以直接这样做吗?

java - MiGLayout 不会向下展开 JPanel

java - 从不断更新的文件中读取完整的行

logging - 从方法签名生成日志语句

spring - 如何在没有继承的情况下在我的测试中共享 @MockBeans 和模拟方法?

ruby-on-rails - Rails 5 集成测试失败,出现 NoMethodError : undefined method `[]=' for nil:NilClass when using Devise helper sign_in

c# - 使用 NUnit 按顺序运行 TestFixtures