使用ASP.NET Core进行单元测试和集成测试教程(续)

五、ASP.NET Core单元测试和集成测试实践
5.1单元测试
5.1.1创建单元测试项目
首先,在一个现有或新建的ASP.NET Core项目中,右键单击项目节点,选择“测试”>“创建测试项目”。这将创建一个新的测试项目,其中包含一个测试类和一個测试方法。
5.1.2编写单元测试
在测试项目中,我们可以编写针对控制器、模型和库的单元测试。以下是一个针对控制器方法的单元测试示例:

using  System;
using  Microsoft.AspNetCore.Mvc;
using  Xunit;
namespace  WebApplication.Tests
{
public  class  HomeControllerTests
{
private  readonly  HomeController  _controller;
public  HomeControllerTests()
{
_controller  =  new  HomeController();
}
[Fact]
public  IActionResult  TestIndex()
{
//  Arrange
var  request  =  new  HttpRequestMessage(HttpMethod.Get,  "/Home/Index");
//  Act
var  response  =  _controller.Index(request);
//  Assert
Assert.NotNull(response);
Assert.IsType<ViewResult>(response);
return  response;
}
}
}

5.2集成测试
5.2.1创建集成测试项目
与单元测试项目类似,右键单击现有或新建的ASP.NET Core项目,选择“测试”>“创建测试项目”,然后选择“集成测试项目”。这将创建一个新的集成测试项目,其中包含一个测试类和一个测试方法。
5.2.2编写集成测试
在集成测试项目中,我们可以针对不同层级的组件进行测试,例如数据库、服务、控制器等。以下是一个针对数据库层级的集成测试示例:

using  System;
using  Xunit;
using  Microsoft.AspNetCore.Data;
using  WebApplication.Data;
namespace  WebApplication.Tests
{
public  class  ApplicationDbContextTests
{
private  readonly  ApplicationDbContext  _context;
public  ApplicationDbContextTests()
{
var  connectionString  =  "UseSqlServer";
var  options  =  new  DbContextOptionsBuilder<ApplicationDbContext>().UseSqlServer(connectionString);
_context  =  new  ApplicationDbContext(options);
}
[Fact]
public  void  TestSaveChanges()
{
//  Arrange
var  entity  =  new  Model.User  {  Name  =  "Test  User",  Age  =30  };
//  Act
_context.Add(entity);
_context.SaveChanges();
//  Assert
Assert.NotNull(_context.Users.FirstOrDefault(u  =>  u.Name  ==  "Test  User"));
}
}
}

5.3测试运行
在编写完单元测试和集成测试后,右键单击测试项目,选择“测试”>“运行测试”。这将运行所有测试,并显示测试结果。若要查看单个测试的结果,可以双击测试方法或在其上右键单击并选择“查看测试”。
5.4持续集成与部署
为了实现持续集成与部署,我们可以使用诸如Azure Pipelines、Jenkins或其他类似工具。这些工具可以自动构建、测试和部署ASP.NET Core应用程序。以下是一个简单的Azure Pipelines示例:
```yaml
pool:
name: Default
variables:
dotnetCoreVersion: '3.1'
steps:

  • task: NuGetToolInstaller
    displayName: 'Install NuGet Package Manager'
    version: '5.3'
  • task: DotNetCoreBuild
    displayName: 'Build dotnet core project'
    projectPath: 'src/WebApplication/WebApplication.csproj'
    dotnetCoreVersion: $[variables.dotnetCoreVersion]
  • task: DotNetCoreTest
    displayName: 'Run unit and integration tests'
    projectPath: 'src/WebApplication/Tests/WebApplication.Tests.csproj'
    dotnetCoreVersion: $[variables.dotnetCoreVersion]
    测试运行器: 'xunit'
  • task: AzureCLI
    displayName: 'Deploy to Azure App Service'
    script

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。