示例重载方法:
public static class StringExtensions{ public static List<string> ToList(this string value,char delimiter) { return ToList(value,new[] { delimiter }); } public static List<string> ToList(this string value,char[] delimiterSet) { .. }}
如果我想写两个单元测试,每个方法一个,你如何命名测试?通常我会使用:
[TestMethod,Testcategory("Single Method Tests")]public voID ToListTest
但是用两个同名的方法,我正在努力找到一个很好的约定
[TestMethod,Testcategory("Single Method Tests")]public voID ToListTest[TestMethod,Testcategory("Single Method Tests")]public voID ToListTestOverload
是可怕的
[TestMethod,Testcategory("Single Method Tests")]public voID ToListTestWithChar[TestMethod,Testcategory("Single Method Tests")]public voID ToListTestWithChararray
基于参数类型更好,但仍然相当可怕.
有些可能会建议编写一个既可以针对两个重载的测试方法,但是我希望与单元测试和方法具有1:1的关系,即使当前链接过载.我不想在测试中做出任何假设,即重载被链接和传递.
你会如何处理?
解决方法 Roy Osherove在他的书“单元测试的艺术”中基于您尝试测试的行为推荐命名约定,并不一定在生产方法和测试方法之间进行一对一的映射.所以,作为一个简单的例子,假设我有一个Stack类,像这样:public class Stack{ public voID Push(int value); public int Pop(); public bool IsEmpty();}
编写测试的一种方法是具有三种测试方法:
[TestMethod]public voID PushTest[TestMethod]public voID PopTest[TestMethod]public voID IsEmptyTest
但是,有一个更好的测试方法指定了Stack类的行为.那么想法就是你在类行为和测试方法之间有一对一的映射.所以,一个行为是空堆栈上的IsEmpty返回true.另一个是推一个元素使堆栈不空.然后,我将根据这些简单的英文句子以Arrange/Act/Assert格式编写测试,指定这些行为的格式如下:
Methodname_StateOfTheObject_ExpectedResult
所以对于上面提到的行为:
[TestMethod]IsEmpty_OnEmptyStack_ReturnsTrue[TestMethod]Push_OnEmptyStack_MakesstackNotEmpty
我会鼓励您考虑上述方法试图测试的行为,然后将这些行为映射到测试.例如:
[TestMethod]ToList_OnEmptyString_ReturnsEmptyList[TestMethod]ToList_OnStringWithDelimiters_ReturnsListWithTokensSeparatedByDelemiter[TestMethod]ToList_OnStringWithoutDelimiters_ReturnsListWithOnestring
更多信息here
总结以上是内存溢出为你收集整理的c#单元测试 – 重载方法测试的命名约定全部内容,希望文章能够帮你解决c#单元测试 – 重载方法测试的命名约定所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)