dotnetcore的单元测试目前支持的比较好的是xunit,首先通过nuget添加组件dotnet-test-xunit 和 xunit。如果有依赖注入可在构造方法中,相当于Nunit中的[Setup]。例如:

  public class BaseRepository
{
public BaseRepository()
{ var builder = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
var configuration = builder.Build();
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterInstance<IConfigurationRoot>(configuration).SingleInstance();
var container = containerBuilder.Build();
var sl = new AutofacServiceLocator(container); ServiceLocator.SetLocatorProvider(() => sl);
containerBuilder.RegisterModule<AutofacModule>(); var workEngin = new WebApiCoreWorkEngine(container);
workEngin.Initialize();
}
}

编译后,回出现在vs的测试资源管理器中。

关于两个实体的值的比较,可通过引入“FluentAssertions” 解决,可方便的对实体和集合值的对比。

如果需要对webapi进行单元测试,那么需引入“MyTested.AspNetCore.Mvc.Universe”。在测试项目中添加继承webapi中startup的类TestStartup,需要注意的是当前项目依赖必须是:

"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
}。

注意加"type": "platform"。

在TestStartup中完成测试环境的依赖注入,

  public class TestStartup:Startup
{ public TestStartup(IHostingEnvironment env) : base(env)
{ } public IServiceProvider ConfigureTestServices(IServiceCollection services)
{
var types = Typefinder.GetTypeEndWith("Repository", "WebApiCore.Repository");
foreach (var type in types)
{
var interfaces = type.GetInterfaces().Where(d => !d.IsConstructedGenericType).ToList();
services.AddSingleton(interfaces[], type);
}
types = Typefinder.GetTypeEndWith("Application", "WebApiCore.Application");
foreach (var type in types)
{
services.AddSingleton(type); } return base.ConfigureServices(services); }
}

然后可以对具体接口的测试,如

        [Fact]
public void GetValues()
{
MyMvc.Controller<ShowController>()
.Calling(d => d.HelloAsync())
.ShouldReturn()
.ResultOfType<OutputWithData<string>>().Passing(d=>d.ResultStatus==); }

dotnetcore 单元测试的更多相关文章

  1. DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义

    回到目录 单元测试大叔认为有几下两个必要的作用,也是为什么要上单元测试的原因 组件,框架在修改和BUG解决后,进行正确性的测试,然后才能打包 业务模块,主要提现在进行业务规则的模拟上面,保证了业务逻辑 ...

  2. DotNetCore + Sonar + Coverlet 代码覆盖率检查

    一,下载 sonar-scanner-msbuild 我当前下载的最新版本是:sonar-scanner-msbuild-4.5.0.1761-netcoreapp2.0 https://docs.s ...

  3. Linux部署DotNetCore记录

    一.背景 最近半年或最近三个月来,公司在计划大刀阔斧的规划重构新的产品.按目前的计划和宣传还是很令人期待的.前端预计应用现在很流行的前端框架,有Vue.ElementUI等,后端宣传了很多微服务.持续 ...

  4. 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持

    前言 距离上一篇文章<基于EF Core的Code First模式的DotNetCore快速开发框架>已过去大半个年头,时光荏苒,岁月如梭...比较尴尬的是,在这大半个年头里,除了日常带娃 ...

  5. DotNetCore跨平台~autofac属性的自动注入

    回到目录 在使用autofac这个DI工具时,我们一般使用的是构造方法注入,而dotnetcore的标准框架里也集成了构造方法注入,而属性注入在一些场景下,表现的更为灵活,像java的spring框架 ...

  6. DotNetCore跨平台~xUnit和测试报告

    在进入dotnet core时代之后,测试驱动开发TDD的主要工具不再是微软的nunit,取而代之的是更通用的xunit,微软把它集成到了dotnetcore的项目里,在安装完成vs2017之后,你可 ...

  7. C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入

    C# 嵌入dll   在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...

  8. DotNetCore知识栈

    #..NET Core提供的特性 1.开源.免费 2.轻量级.跨平台 3.组件化.模块化.IOC+Nuget.中间件 4.高性能 5.统一了MVC和WebAPI编程模型 a)  比如:ASP.NET ...

  9. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

随机推荐

  1. Laravel 安装代码智能提示扩展「laravel-ide-helper」

    ========================laravel-ide-helper======================== 使用 Laravel 框架IDE居然没有智能提示?这感觉实在太糟糕 ...

  2. 使用Ruby来实现批量更新AD中字段

    准备工作 安装需要用到的gem gem install net-ldap gem install roo 准备好要更新的数据,比如exel表: /root/account.xlsx,内容如下 姓名 性 ...

  3. EndNote(二)之英文引文导入方式

    在上一篇EndNote教程(一)--基本介绍中介绍了基本使用,今天将来介绍如何将常用文献引文导入EndNote中. EndNote在文献管理方面有着很多优点,可以节约很多精力.但是,不同文献查询网站可 ...

  4. Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法

    Oracle客户端工具出现"Cannot access NLS data files or invalid environment specified"错误的解决办法 方法一:参考 ...

  5. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  6. Quartz.net Trigger触发器下 Cron表达式的格式

    有位博主写的不错,样式标准好理解,借鉴下. foamflower 1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] ...

  7. c# 保存数据到txt (追加)

    StringBuilder sb = new StringBuilder(); sb.AppendLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:s ...

  8. REPL环境

    一.Node的REPL基本操作 REPL(Read-eval-print-loop):交互式解析器 在REPL环境下,可以定义和运行变量.函数.对象. REPL的常用命令: 进入node,即进入了RE ...

  9. 深入理解 spring 容器,源码分析加载过程

    Spring框架提供了构建Web应用程序的全功能MVC模块,叫Spring MVC,通过Spring Core+Spring MVC即可搭建一套稳定的Java Web项目.本文通过Spring MVC ...

  10. access基本操作(c#操作,远程连接,执行sql,加密,备份)

    前言 最近项目用到了access,是的就是access,工作在桌面型的小数据库应用还是会用到的,如果你确定永远不会遇到access的操作,请忽略此篇文章 1.vs配置access 既然是数据库,就少不 ...