2

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

我试过 NUnit,但它不会生成测试。在 Eclipse 中,插件randoop执行此操作,但是它针对 Java 和 JUnit。

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

4

1 回答 1

8

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

randoop 似乎只检查很少的非常基本的属性equal,这在 imo 中用处不大,还可能导致正确性的错误印象(“嘿,看,所有测试都通过了,我的软件没问题”......)

同样,只是随机生成代码(和输入)具有不确定测试结果的风险。您可能会或可能不会得到真正发现代码缺陷的测试。

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

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

也就是说,还要看看这个问题(当然还有其他关于 SO 的问题),这可能支持我反对自动单元测试生成的论点。

于 2012-11-27T20:40:08.170 回答