如果你写了一个方法
public static string ToMappingString(this Widget obj)
你可以通过认可测试 (www.approvaltests.com or nuget) 轻松地进行测试。
这里有一个视频:http://www.youtube.com/watch?v=vKLUycNLhgc
然而,如果你想测试 "My objects save and retrive themselves"
那么这是一个理论测试的完美场所。
基于理论的测试
大多数单元测试采用以下形式:
Given A,B expect C
基于理论的测试是
Given A,B expect Theory
这个方法的美妙之处在于你不需要知道C,所以任何随机生成器都可以使用,也不需要担心A和B采用哪种特定形式。
示例1:测试加法和减法方法
通常你会有类似下面的代码:
Assert.AreEqual(5, Add(2,3));
Assert.AreEqual(9, Add(10,-1));
Assert.AreEqual(10, Add(5,5));
Assert.AreEqual(7, Subtract(10,3));
然而,如果你写了一份理论测试,它会看起来像这样
for(int i = 1; i < 100; i++)
{
int a = random.Next();
int b = random.Next();
Assert.AreEqual(a, Subtract(Add(a,b),b, string.Format("Failed for [a,b] = [{0},{1}], a,b));
}
现在你已经了解了基于理论的测试,你要测试的理论是什么
Given Model A
When A is stored to the database, and retrieved the resulting object is equal to A