尤其是对于C#单元测试,如何进行测试运行各种输入或输入矩阵?单元测试各种各样foreach的一些输入
我经常会遇到单元测试会产生输入矩阵的情况,但通常可以通过检查输入列表来合理解决这个问题。
最简单的情况下,测试加成:
- 0 + 0 = 0
- 1 + 0 = 1
- 0 + -1 = -1
- 1 + -1 = 0
对每个输入都会进行相同的测试(在这个例子中有4个输入,每个输入都与某些经验相关输出。
的简单的解决方案是:
object[] inputs = ...
foreach (var input in inputs)
// Put Assert here
但问题是,当你运行你的测试不会告诉为其输入失败,除非你在邮件日志足够的细节手动。
另一种解决方案是展开循环(如下所示)。堆栈跟踪然后给出哪个输入失败,并且这允许再次对单个输入运行测试。
TestAddition(0, 0, 0);
TestAddition(1, 0, 1);
TestAddition(0, -1, -1);
TestAddition(1, -1, 0);
最后但并非最不重要的,就像FitNess解决方案,这似乎有助于这种情况下,还增添了不少复杂的,似乎没有适应好了标准C#开发。
所有这些解决方案都不适用于灯具,因为所有输入都会调用[TestInitialize]
一次。
你的解决方案是什么?
是否有一些功能我不知道可以帮助这些情况?
看看这是否有帮助 - 标签:'无耻的博客插件':) http://madcoderspeak.blogspot.com/2009/01/nunit-rowtest-extension-running-same.html – Gishu 2010-06-30 14:45:31
感谢那些keyworks。有了它,我发现http://www.c-sharpcorner.com/UploadFile/sanks/1770/Default.aspx这似乎接近我正在寻找(看起来有点复杂)。搜索... – Wernight 2010-06-30 14:57:12