我過去做過的事情是創建一個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)以及你所有的測試。
哇,這正是我所期待的。我剛剛使用CSV文件作爲數據源。我現在可以看到我的測試的73個細節在一次命中運行。輝煌!唯一令人失望的是:我剛剛發現NCrunch不支持MSTest數據驅動測試... – Aligma 2013-03-18 02:02:39
是的 - 在[NCrunch論壇](http://forum.ncrunch.net)中似乎有一個關於NCrunch-Mstest數據驅動測試的話題/yaf_postst180_ETA-of-MSTest-data-driven-tests.aspx)。倒黴。我猜你已經有了運行測試的腳本,在這種情況下,你也應該瞭解它們。 – 2013-03-18 03:45:52