有时候我们期待以固定的顺序执行测试,比如先新增学生信息,再修改学生信息,再查询、再删除。在这种设计下,如果顺序发生变化,可能导致错误,比如修改一个不存在的学生信息,会导致测试不通过。
这里以Xunit
为例,来看一下如何实现顺序执行单元测试。
直接谷歌xunit Priority unit test
,可以得到一个官方的答案TestCaseOrdering。
定义一个TestPriorityAttribute
,用于获取unit tests的排序,实现ITestCaseOrderer
接口,在OrderTestCases
方法中通过TestPriorityAttribute
进行排序,即可实现顺序执行unit tests。
TestPriorityAttribute
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class TestPriorityAttribute : Attribute
{
public TestPriorityAttribute(int priority)
{
Priority = priority;
}
public int Priority { get; private set; }
}
PriorityOrderer