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

标签 c# .net unit-testing testing monodevelop

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

我试过 NUnit,但它不生成测试。在eclipse中,插件randoop这样做,但是它针对 Java 和 JUnit。

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

最佳答案

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

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

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

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

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

也就是说,还可以查看 this question (当然还有其他关于 SO 的内容),这可能支持我的论点反对自动单元测试生成。

关于c# - 如何在 MonoDevelop/.Net 中自动生成单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590985/

相关文章:

c# - 项目符号点不替换 - csv 到 xml

c# - 每次运行后 20 分钟运行线程

c# - 配置管理器类。锁定时无法编辑 ConfigurationSection 属性

c# - 为什么 C# 在 AppDomain 中调用函数比 VB 快得多

android - Robolectric 测试在 Android Studio 中运行但不在命令行中运行

c++ - 在未命名的命名空间中对 C++ 代码进行单元测试

c# - "Type is not expected, and no contract can be inferred: Leap.Vector"错误。使用 Protobuf-net 序列化器

c# - 将匿名类型转换为已知类型

mysql - 频繁项集生成的数据库和应用程序设计

unit-testing - Dart pub构建:dart版本和已编译js版本之间的一致性