在ASP.Net Core RC2中使用XUnit单元测试

建立项目

在现有的解决方案中,添加一个.Net Core类库项目

修改project.json

增加xunit相关包的引用

例如:

	"testRunner": "xunit",
	"dependencies": {
		"Microsoft.NETCore.App": {
			"version": "1.0.0-rc2-3002702",
			"type": "platform"
		},
		"xunit": "2.1.0",
		"xunit.runner.visualstudio": "2.1.0",
		"dotnet-test-xunit": "1.0.0-rc2-build10025"
	},

如果你不需要与VS IDE的单元测试集成,则可以删掉 xunit.runner.visualstudio 一行

错误提示xunit不支持netstandard1.5

这时需要把 frameworks 修改为

	"frameworks": {
		"netcoreapp1.0": {
			"imports": [
				"dotnet5.6",
				"dnxcore50",
				"portable-net45+win8"
			]
		}
	},

书写单元测试方法

		[Fact]
		public void PassingTestDotnet()
		{
			Assert.Equal(1, 1);
		}

使用cli进行单元测试

dotnet test

其他补充

如果你要测试的项目有使用到 appsettings.json 等配置文件,则需要把该文件复制一份到 UnitTest 项目中,然后修改单元测试类的构造函数

		public UnitTest()
		{
			var builder = new ConfigurationBuilder()
				.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
				.AddEnvironmentVariables();

			Startup.Configuration = builder.Build();
		}

修改后可能还会报找不到 appsettings.json 文件的IO异常,此时则需要修改 project.json 文件,让构建发布时把该文件一起发布

	"publishOptions": {
		"include": [
			"appsettings.json"
		]
	},
	"buildOptions": {
		"copyToOutput": [
			"appsettings.json"
		]
	}

TFS测试集成

新建一个文件 RunDotnetTest.ps1

Set-ExecutionPolicy unrestricted -Scope CurrentUser -Force
dotnet test $PSScriptRoot\微信企业号\src\UnitTest -xml $PSScriptRoot\微信企业号\src\UnitTest\testresults.xml

注意修改为自己项目的路径

参照 升级.Net Core RC2的那些事(四)——TFS2015的CI集成 一文中的方法,把此PowerShell文件添加为生成步骤

然后再添加一个 发布测试结果 的生成步骤

相关设置如下:

保存生成定义后,单击 为生成排队 ,可以看看效果

不允许评论