.net core + xunit 集成测试
xunit地址:https://github.com/xunit/xunit
一、利用请求来测试接口,主要是测试webapi控制器方法
①添加xunit项目 ,然后引用我们的主项目,nuget:
Microsoft.AspNetCore.TestHost,
Microsoft.AspNetCore.Mvc.Testing(不然找不到接口地址),
Microsoft.NETCore.App,
Microsoft.AspNetCore.App ,
Microsoft.EntityFrameworkCore.InMemory 使用内存数据库进行测试
②在主项目中写几个测试接口
③测试项目中创建 TestServerFixture
public class TestServerFixture : IDisposable
{
private readonly TestServer _testServer;
public HttpClient Client { get; } public TestServerFixture()
{
var bulild = new WebHostBuilder().UseStartup<Startup1>();
_testServer = new TestServer(bulild);
Client = _testServer.CreateClient();
}
public void Dispose()
{
Client.Dispose();
_testServer.Dispose();
}
}
然后创建 Startup1类跟主项目中保持一致。连接数据库的方式换成内存数据库,注:如果 有使用到IConfiguration,把路径写死成主项目的路径,然后得到IConfiguration
根据路径获取IConfiguration的方法:
//path 设置到住项目的路径即可
IConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(path) ////Microsoft.Extensions.Configuration.FileExtensions
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);//Microsoft.Extensions.Configuration.Json AddJsonFile if (!string.IsNullOrWhiteSpace(environmentName))
{
builder = builder.AddJsonFile($"appsettings.{environmentName}.json", optional: true);
} builder = builder.AddEnvironmentVariables(); //Microsoft.Extensions.Configuration.EnvironmentVariables return builder.Build();
创建测试,运行就可以了:
授权的怎么调用:列如:接口使用的JWT授权
在两个启动文件中加入,两个都需要加
然后在测试的TestServerFixture 中添加头部信息
如果通过了授权:
二、测试仓储层代码,不走webapi,主要使用注入和解耦来实现依赖注入 ,需要引用:Autofac
创建DbFixture.cs来实现注入和数据库使用
public class DbFixture
{
public IContainer Container { get; private set; } public DbFixture()
{
var builder = new ContainerBuilder();
//内存数据库
var option = new DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase("My.D3").Options;
MyDbContext context = new MyDbContext(option); //InitializeDbForTests 初始化测试数据
new TestDataBuilder(context).Build(); builder.RegisterInstance(context).As<MyDbContext>();
//注入
Server.ContentRootPath = Path.GetFullPath(@"..\..\..\..\..\") + @"src\My.D3";
IConfigurationRoot configuration = AppConfigurationHelper.Get(Server.ContentRootPath);
builder.RegisterType<SimpleDbContextProvider<MyDbContext>>().As<IDbContextProvider<MyDbContext>>().InstancePerLifetimeScope();
var assemblysServices = Assembly.Load("My.D3.Application");
builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(DbFixture).GetTypeInfo().Assembly); Container = builder.Build();
}
}
测试仓储层案列:
/// <summary>
/// 集成测试 测试appservice层接口
/// </summary>
public class Test2_Test : IClassFixture<DbFixture>
{ private readonly IEnumAppService _enumAppService; public Test2_Test(DbFixture fixture)
{
this._enumAppService = fixture.Container.Resolve<IEnumAppService>();
} /// <summary>
/// 测试
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[Fact]
public async Task Test()
{
EnumInDto inDto = new EnumInDto()
{
EnumTypeName = "SexTypeEnum",
Module = "Demo"
};
var list = await _enumAppService.GetEnumArray(inDto);
string aa = "";
} }
这样就可以了,测试webapi和仓储层是不一样的,一般我们使用第一种集成测试就好了。
.net core + xunit 集成测试的更多相关文章
- Net6 Xunit 集成测试
对于单元测试.集成测试大部分开发的朋友都懒得去写,因为这要耗费精力去设计去开发,做完项目模块直接postman 调用测试(当然这是一个选择,开发也中经常用到),但是如果测试需要多样化数据,各种场景模拟 ...
- 在 .Net Core xUnit test 项目中使用配置文件
在对项目做集成测试的时候,经常会需要用到一些参数比如用户名密码等,这些参数不宜放在测试代码中.本文介绍一种方法:使用配置文件. 添加配置文件 在集成测试项目目录下新建文件:Configuration. ...
- 学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory
WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestSer ...
- .NET Core系列 :4 测试
2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...
- 好代码是管出来的——.Net Core中的单元测试与代码覆盖率
测试对于软件来说,是保证其质量的一个重要过程,而测试又分为很多种,单元测试.集成测试.系统测试.压力测试等等,不同的测试的测试粒度和测试目标也不同,如单元测试关注每一行代码,集成测试关注的是多个模块是 ...
- 如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)
本文是为了学习ABP的使用,是翻译ABP官方文档的一篇实战教程,我暂时是优先翻译自己感兴趣或者比较想学习的部分,后续有时间希望能将ABP系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能 ...
- 学习笔记之Unit testing/Integration testing/dotnet test and xUnit
source code https://github.com/haotang923/dotnet/tree/master/src Unit testing C# code in .NET Core u ...
- 2020中国.NET开发者峰会近50场热点技术专题揭秘
简介 / Summary 2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路上又前进了一步.2014年以来已经有众多知名公司加入.NET基金会,微软,Google,AWS三大云厂 ...
- Asp.Net Core 轻松学-利用xUnit进行主机级别的网络集成测试
前言 在开发 Asp.Net Core 应用程序的过程中,我们常常需要对业务代码编写单元测试,这种方法既快速又有效,利用单元测试做代码覆盖测试,也是非常必要的事情:但是,但我们需要对系统进行集 ...
随机推荐
- os.path.join()函数的用法
转:https://blog.csdn.net/hduxiejun/article/details/80289476 os.path.join()函数:连接两个或更多的路径名组件 1.如果各组件名 ...
- laravel框架之状态更改
//表单@if($v['sex']==0) <td class="se" ss="{{$v['sex']}}" id="{{$v['id']}} ...
- 双栈(Dual Stack)
参考博客: 双栈数据结构: https://blog.csdn.net/hebtu666/article/details/83011115 https://blog.csdn.net/cainv89/ ...
- token安全之任意密码重置
前言 偶然间挖了一个漏洞是密码重置,挖掘过程很有趣,可以参考下. 挖掘过程 在说明之前我们可以先走下正常流程,这样才方便查漏~ 正常流程 第一步骤: 正常填写完,点击下一步发送请求: POST /[U ...
- Test CMake run finished with errors
Test CMake run finished with errors 记录一个安装 CLion 过程中的错误. CLion的安装和破解教程网上有很多,大家可以自行搜索. 安装了之后在 Setting ...
- Spark MLlib基本算法【相关性分析、卡方检验、总结器】
一.相关性分析 1.简介 计算两个系列数据之间的相关性是统计中的常见操作.在spark.ml中提供了很多算法用来计算两两的相关性.目前支持的相关性算法是Pearson和Spearman.Correla ...
- Linux搭建邮件服务器Postfix+Dovecot+MySQL+PHP
用于搭建的服务器信息 阿里云 Centos 6.5 32位 安装过程1.安装Postfix 版本(2:2.6.6-8.el6) yum -y install postfix 安装完成还需要替换系统自带 ...
- Odoo报表的report标签和报表格式定义
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826329.html 一:Report标签 report标签可用于定义一条报表记录.属性有: 1) ...
- windows开启PostgreSQL数据库远程访问
1.在PostgreSQL安装目录下data文件夹,打开pg_hba.conf文件,新增允许访问的ip 2.打开postgresql.conf,将listen_addresses = 'localho ...
- MySQL权限管理、配置文件(三)
一.MySQL权限管理 GRANT 权限 ON 授权范围 TO '用户名'@'允许的ip(所有%)' IDENTIFIED BY '用户密码'; 权限:参加下表,一般常用的是CREATE.DELETE ...