前言 在我们开发过程中基本上不可或缺的用到一些敏感机密数据,比如SQL服务器的连接串或者是OAuth2的Secret等,这些敏感数据在代码中是不太安全的,我们不应该在源代码中存储密码和其他的敏感数据,一种推荐的方式是通过Asp.NetCore的机密管理器。 机密管理器 在ASP.NETCore中,机密管理器通常指的是一种工具或机制,用于安全地存储和管理应用程序中的敏感数据,如数据库连接字符串、API密钥、密码等。这样的工具可以帮助开发人员有效地管理敏感信息,避免将其硬编码在代码中或与源代码一同提交到版本控制系统中,从而提高数据安全性和保密性。 通过上面我们可以得知,应用机密存储和项目数在不...

  2NpId4nxxBM0   4天前   15   0   0 .NET

引言 在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下代码覆盖率,代码覆盖率是单元测试运行的度量值,覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用例的质量和代码的健壮性。常见的覆盖率包括语句覆盖率(LineCoverage)、分支覆盖率(BranchCoverage)、路径覆盖率(PathCoverage)等,不同类型的覆盖率可以帮助开发人员更全面地了解测试用例对代码的覆盖情况,从而改进测试策略和提高代码质量。 核心组件 本文介绍如何通过Coverlet在单元测试中使用代码覆盖率和使用ReportGenerator生成报表。 什么是Cove...

  2NpId4nxxBM0   6天前   18   0   0 .NET

引言 在上一章节我们实战了在Asp.NetCore中的项目实战,这一章节讲解一下如何测试Asp.NetCore的中间件。 TestServer 还记得我们在集成测试中提供的TestServer吗?TestServer是由Microsoft.AspNetCore.TestHost包提供的。包含了用于在测试环境中模拟ASP.NETCore应用程序的类和方法。通过使用TestServer,开发人员可以在测试中模拟整个应用程序的运行环境,包括中间件的执行,从而进行集成测试和端到端测试。 中间件可以使用TestServer单独测试。这样便可以: 实例化只包含需要测试的组件的应用管道。 发送自定义请求以...

  2NpId4nxxBM0   7天前   19   0   0 .NET

引言 集成测试可在包含应用支持基础结构(如数据库、文件系统和网络)的级别上确保应用组件功能正常。ASP.NETCore通过将单元测试框架与测试Web主机和内存中测试服务器结合使用来支持集成测试。 简介 集成测试与单元测试相比,能够在更广泛的级别上评估应用的组件,确认多个组件一起工作以生成预期结果,包括数据库、文件系统、网络设备等组件。单元测试主要用于测试独立软件组件,如类方法,通常使用fake或mock对象。集成测试使用实际组件,需要更多代码和数据处理,运行时间更长。建议将集成测试限制在重要的基础结构方案上,若可用单元测试或集成测试测试行为,优先选择单元测试。集成测试中被测试的项目通常称为"S...

  2NpId4nxxBM0   10天前   14   0   0 .NET

引言 上一章我们介绍了在xUnit单元测试中用xUnit.DependencyInject来使用依赖注入,上一章我们的Sample.Repository仓储层有一个批量注入的接口没有做单元测试,今天用这个示例来演示一下如何用Bogus创建模拟数据,和EFCore的种子数据生成 Bogus的优势 丰富的数据生成支持:Bogus提供了广泛的API支持,涵盖了各种数据类型和用例,使得生成虚假数据变得非常灵活和方便。 重复性和可控性:通过设置种子值,可以确保生成的虚假数据是可重复的,这对于需要一致的测试数据或示例数据非常有用。 易于使用:Bogus使用流畅的语法和简单的方法调用,使得生成虚假数据变得...

  2NpId4nxxBM0   12天前   24   0   0 .NET

引言 上一篇我们创建了一个Sample.Api项目和Sample.Repository,并且带大家熟悉了一下Moq的概念,这一章我们来实战一下在xUnit项目使用依赖注入。 Xunit.DependencyInjection Xunit.DependencyInjection是一个用于xUnit测试框架的扩展库,它提供了依赖注入的功能,使得在编写单元测试时可以更方便地进行依赖注入。通过使用Xunit.DependencyInjection,可以在xUnit测试中使用依赖注入容器(比如Microsoft.Extensions.DependencyInjection)来管理测试中所需的各种依赖关系...

  2NpId4nxxBM0   14天前   32   0   0 .NET

引言 上一章节介绍了TDD的三大法则,今天我们讲一下在单元测试中模拟对象的使用。 Fake FakeFake是一个通用术语,可用于描述stub或mock对象。它是stub还是mock取决于使用它的上下文。也就是说,Fake可以是stub或mock MockMock对象是系统中的fake对象,用于确定单元测试是否通过。Mock起初为Fake,直到对其断言。 StubStub是系统中现有依赖项的可控制替代项。通过使用Stub,可以在无需使用依赖项的情况下直接测试代码。 参考单元测试最佳做法让我们使用相同的术语 区别点: Stub: 用于提供可控制的替代行为,通常是在测试中模拟依...

  2NpId4nxxBM0   17天前   16   0   0 .NET

引言 在我们上一篇文章了解了单元测试的基本概念和用法之后,今天我们来聊一下TDD(测试驱动开发) 测试驱动开发(TDD) 测试驱动开发英文全称是TestDrivenDevelopment简称TDD。 根据UncleBob的TDD描述总结 我们先创建一个测试项目 直接在VS创建即可,可以参考上一篇文章的创建过程 TheThreeLawsofTDD. Youarenotallowedtowriteanyproductioncodeunlessitistomakeafailingunittestpass. Youarenotallowedtowriteanymoreofaunittestthani...

  2NpId4nxxBM0   22天前   22   0   0 .NET

引言 在现代化的软件开发中,单元测试和集成测试是确保代码质量和可靠性的关键部分。ASP.NETCore社区内提供了强大的单元测试框架,xUnit是其中之一,它提供了简单、清晰和强大的测试功能,编写单元测试有许多优点;有助于回归、提供文档及辅助良好的设计。下面几节我们来深入浅出探讨如何使用xUnit进行ASP.NETCore应用程序的单元测试和集成测试。 内容大纲: xUnit简介 xUnit.net是一个免费、开源、面向社区的.NET单元测试工具。由NUnitv2的原始发明者编写,xUnit.net是用于C和F(其他.NET语言可能也可以使用,但不受支持)的最新技术单元测试。xUnit.ne...

  2NpId4nxxBM0   26天前   13   0   0 .NET

前言 .NETFeatureManagement是一个用于管理应用程序功能的库,它可以帮助开发人员在应用程序中轻松地添加、移除和管理功能。使用FeatureManagement,开发人员可以根据不同用户、环境或其他条件来动态地控制应用程序中的功能。这使得开发人员可以更灵活地管理应用程序的功能,并根据需要快速调整和部署新功能。FeatureManagement还提供了一些方便的工具和API,帮助开发人员更轻松地实现功能管理和控制。 安装 .NetCLI dotnetaddpackageMicrosoft.FeatureManagement.AspNetCore--version4.0.0-p...

  2NpId4nxxBM0   2024年03月27日   23   0   0 .NET

前言 本文的主题是VisualStudio调试NuGet包,以及符号包的概念,如何去发布一个NuGet包,让我们的NuGet包支持SouceLink,这些都是我们开发中比较容易忽视的内容,但是熟悉了以后可以让我们在调试中得心应手,也是开源项目开发的基础篇。 demo源代码在文末 pdb符号文件 程序数据库(.pdb)文件(也称为符号文件)将项目源代码中的标识符和语句映射到已编译应用中的相应标识符和说明。这些映射文件将调试器链接到源代码,以进行调试。 在VisualStudio调试器(C、C、VisualBasic、F)中指定符号(.pdb)和源文件 符号文件的工作方式 .pdb文件保存...

  2NpId4nxxBM0   2024年03月25日   49   0   0 .NET

前言 文本主要讲MinimalApis中的使用自定义IResultModel和系统自带IResult做响应返回值。MinimalApis支持以下类型的返回值: string这包括Task<string>和ValueTask<string> T(任何其他类型)这包括Task<T>和ValueTask<T> 基于IResult这包括Task<IResult>和ValueTask<IResult>本文的完整源代码在文末 string返回值 行为 Content-Type 框架将字符串直接写入响应。 text/p...

  2NpId4nxxBM0   2024年03月22日   15   0   0 .NET

前言 从.NetCore开始,.Net平台内置了一个轻量,易用的IOC的框架,供我们在应用程序中使用,社区内还有很多强大的第三方的依赖注入框架如: Autofac DryIOC Grace LightInject Lamar Stashbox SimpleInjector 内置的依赖注入容器基本可以满足大多数应用的需求,除非你需要的特定功能不受它支持否则不建议使用第三方的容器。 我们今天介绍的主角Scrutor是内置依赖注入的一个强大的扩展,Scrutor有两个核心的功能:一是程序集的批量注入Scanning,二是Decoration装饰器模式,今天的主题是Scanning。 开始之前在项...

  2NpId4nxxBM0   2024年03月19日   23   0   0 .NET

前言 异常的处理在我们应用程序中是至关重要的,在dotNet中有很多异常处理的机制,比如MVC的异常筛选器,管道中间件定义trycatch捕获异常处理亦或者第三方的解决方案Hellang.Middleware.ProblemDetails等。MVC异常筛选器不太灵活,对管道的部分异常捕获不到,后两种方式大家项目应该经常出现。 在dotNet8发布之后支持了新的异常处理机制IExceptionHandler或者UseExceptionHandler异常处理程序的lambda配置,配合dotNet7原生支持的ProblemDetail使得异常处理更加规范。 本文用一个简单的Demo带大家看一下新的...

  2NpId4nxxBM0   2024年03月15日   53   0   0 .NET

前言 作为开发人员,我们经常向应用程序添加新功能并修改当前的Api。版本控制使我们能够安全地添加新功能而不会造成中断性变更。一个良好的Api版本控制策略可以清晰地传达所做的更改,并允许使用现有RESTApi的客户端在准备好时才迁移或更新他们的应用程序到最新版本。 哪些行为可能会造成Api的中断性变更呢? 删除或重命名Api 修改Api参数(类型,名称,可选参数变成非可选参数,删除必需参数等) 更改现有Api的行为 更改Api响应 更改Api错误代码 More 我们在做开发的过程中迟早会面对Api版本控制需求,在Api开发的过程中学习如何进行版本控制是至关重要的。 本文主要介绍在Mini...

  2NpId4nxxBM0   2024年03月14日   26   0   0 .NET
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~