我过去做过的事情是创建一个t4模板来从数据源创建我的测试。通常是测试的 CSV 文件。要(重新)生成所有您需要做的就是打开 TT 文件并将其保存以重新生成 - 或使用 VS 工具。
这样做的好处是每个条件只有一个测试,而且即使它们是为您生成的,它也会为您提供易于重复的测试。您还可以非常轻松地调试失败的测试,因为代码最终是 C#。
例如,使用此内容创建一个 *.tt 并拥有一个包含一些数据的 CSV 文件:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".generated.cs" #>
<#
var testCases =
File.ReadAllLines(Path.Combine(Host.TemplateFile, @"Cases.csv"))
.Skip(1) //Headers
.Select(line => line.Split(','))
.Select(
values =>
new
{
TestName = values[0],
Expected = values[1],
Actual = values[2],
//More Stuff from values[n]
});
#>
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace DaveShaw
{
[TestClass]
public class GeneratedTests
{
<#
foreach (var testCase in testCases)
{
#>
[TestMethod]
public void Generated_<#= testCase.Name #>()
{
//Put your Arrange & Act code here
Assert.AreEqual(
expected: <#= testCase.Expected #>
actual: <#= testCase.Expected #>);
}
<#
}
#>
}
}
保存后,您将拥有一个 *.generated.cs(其中 * 与 *.tt 相同),其中包含所有测试。