using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; using Xunit.Abstractions; using Xunit.Extensions; using Xunit.Sdk; using xUnitStudy.Model; namespace xUnitStudy.WebApi.Test { /// /// 测试用例级别的共享 /// public class UseFixtureTest:IDisposable { /* 学习 测试时,无论是针对一些比较耗费资源的对象亦或是为了支持Test case预设数据的能力,我们都需要有一些初始化或是清理相关的动作。 在每个测试用例执行前和执行后,可能需要执行相同的准备和清理工作。 本例方法1:放在构造函数和IDisposable接口的实现方法Dispose()中 执行流程: 用例b:创建测试类实例 --> 构造函数 --> 用例1 --> Dispose()方法 --> 结束测试类实例 --> 完成 用例a:创建测试类实例 --> 构造函数 --> 用例2 --> Dispose()方法 --> 结束测试类实例 --> 完成 用例x:创建测试类实例 --> 构造函数 --> 用例2 --> Dispose()方法 --> 结束测试类实例 --> 完成 用例m:创建测试类实例 --> 构造函数 --> 用例2 --> Dispose()方法 --> 结束测试类实例 --> 完成 ........ 所有用例完成 注意:用例执行的先后顺序由xUnit框架指定,且先后顺序不固定。尤其是并行执行时,执行顺序和返回顺序更不确定。 所以,各单元测试是完全独立的,相互之间不能存在任何依赖,特别是执行顺序、执行结果、共享数据。 */ object sharedData; public UseFixtureTest() { //测试用例执行前做准备 sharedData = "sharedate"; } [Fact] public void Case2_Test() { Assert.Equal("sharedate", sharedData.ToString()); } [Fact] public void Case1_Test() { Assert.Equal("sharedate", sharedData.ToString()); } public void Dispose() { //测试用例执行后做清理 sharedData = null; } } }