如何在MonoDevelop / .Net中自动生成单元测试?

时间:2012-11-27 18:47:07

标签: c# .net unit-testing testing monodevelop

我希望在MonoDevelop / .Net中自动生成单元测试。

我尝试过NUnit,但它不会生成测试。在eclipse中,插件randoop执行此操作,但它以Java和JUnit为目标。

如何在MonoDevelop和/或.Net中自动生成单元测试?或者也许有一个现有的工具,我不知道......

1 个答案:

答案 0 :(得分:8)

使用不同(随机)输入调用方法只是过程的一部分。您还需要为每个输入定义正确的结果,我认为工具不能为您做到这一点。

randoop似乎只检查equal的非常基本的属性,这对imo没什么用处,也可能导致错误的正确印象(“嘿看,所有测试都通过,我的软件还可以“......)

同样,随机生成代码(和输入)也存在未确定测试结果的风险。您可能会或可能不会在您的代码中找到真正发现缺陷的测试。

也就是说,快速的Google搜索为您可能想要采取的方法提供了以下起点:

  • 您可能对使用测试用例生成器感兴趣(此CodeProject article描述了一个非常简单的生成器)。它们支持您生成“样板”代码并且可以确保,您不会错过任何您想要测试的类/方法。当然,需要通过定义适当的(即有意义的)输入和(正确的)输出值来调整生成的测试。谷歌搜索“NUnit测试生成器”将为您提供其他链接,也为商业软件,我不想在这里重复...
  • NUnit(和其他测试框架)支持参数化测试:这些测试可用于测试整类输入场景。对于NUnit,我找到了Random属性,它允许您为方法生成随机输入(在特定范围内)。记住我上面写的关于随机测试输入的内容:这些测试的结果将不可重现,这使得它们无法用于自动或回归测试。

那就是说,也看看this question(当然还有其他人在SO上),这可能会支持我的反对自动单元测试生成。