ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-24 15:38:13  阅读:151  来源: 互联网

标签:ASP Logging MELT Extensions 日志 NET


日志是诊断、监视或审核应用程序行为的关键元素,因此,如果您是库作者或正在开发应用程序,则确保生成正确的日志非常重要。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编写集成测试的所有不同场景。

标签:ASP,Logging,MELT,Extensions,日志,NET
来源: https://www.cnblogs.com/shanyou/p/16409045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有