• 一个用于 Microsoft.Extensions.Logging 的测试库MELT


    日志是诊断、监视或审核应用程序行为的关键元素,因此,如果您是库作者或正在开发应用程序,则确保生成正确的日志非常重要。Microsoft.Extensions.Logging是.NET中事实上的标准抽象,用于从库或应用程序生成日志,因为它与 ASP.NET Core的第一个版本一起推出。在开发和使用日志记录库的方面,ASP.NET Core 团队创建了 Microsoft.Extensions.Logging.Testing,这是一个在 ASP.NET Core 内部用于测试日志记录的库。

    可惜的是,ASP.NET团队 目前没有计划为它提供出来,也正是在这个issue 的末尾出现了一个库MELT。 MELT 是一个免费的开源测试库,用于 .NET 标准 Microsoft Extensions Logging 库。它是在Apache许可证2.0下授权的。

    如何使用 MELT 编写单元测试?

    • 安装 NuGet 包 MELT

      <PackageReference Include="MELT" Version="0.8.0" />
      
    • 获取LoggerFactory

      var loggerFactory = MELTBuilder.CreateLoggerFactory();
      
    • 像往常一样,从LoggerFactory获取ILogger,传递给您的夹具。

      var logger = loggerFactory.CreateLogger<Sample>();

    LoggerFactory 公开一个属性LogEntries,该属性枚举捕获的所有日志。每个条目都公开日志的所有相关属性。 例如,xUnit测试是否已发出单个日志,并且该日志具有特定消息:

    var log = Assert.Single(loggerFactory.LogEntries);

    Assert.Equal("The answer is 42", log.Message);

    LoggerFactory 公开一个属性Scopes,该属性枚举捕获的所有作用域。 例如,xUnit要测试是否已发出单个作用域并且它具有特定消息,请执行以下操作:

    var scope = Assert.Single(loggerFactory.Scopes);

    Assert.Equal("I'm in the GET scope", scope.Message);


    对于集成测试,您需要一些设置,但它非常简单,并且支持为 ASP.NET Core编写集成测试的所有不同场景。

  • 相关阅读:
    Functional Programming Contest
    CodeChef--SEPT14小结
    Weekly 10 小结
    CSS中的 REM PX EM
    phoenegap3.5 采坑
    PPT插件 用js制作PPT
    js 代码命名规范系列
    文档列表
    mockjax MOCK.js的拦截ajax请求
    css Tab选项卡
  • 原文地址:https://www.cnblogs.com/shanyou/p/16409045.html
Copyright © 2020-2023  润新知