【问题标题】:Parameterized testing tools with automatic code exploration具有自动代码探索功能的参数化测试工具
【发布时间】:2010-10-01 00:56:35
【问题描述】:

我使用 Microsoft Pex 进行了检查并玩了一些。它是一个非常方便的工具/库,尽管用它编写参数化单元测试并不那么直接。但是如果使用得当,它可以提供比编写手动单元测试更好的测试代码覆盖率。更不用说编写这些测试所花费的时间了。它还与 Visual Studio 很好地集成。

我想知道是否还有其他工具可以让您编写参数化单元测试并运行它们,以便内部算法智能地选择值以提供完整的代码测试覆盖率?

如果其他工具/库像 NUnit+Moq 一样易于使用,我会更加高兴。 Pex 的学习曲线相当陡峭(我猜 Moles 也是如此)。

NUnit 有没有计划在未来支持带有智能参数选择的参数化测试?有人知道它的内部信息吗?

【问题讨论】:

  • 专门用于 .net?或其他平台的任何类似工具?
  • @Mauricio Scheffer:谢谢你:我在问题中添加了一个附加标签。我只对 .net 工具/库感兴趣。是的。
  • 将问题大幅更改到使现有答案无效的程度并不酷。
  • 好吧,我没有。为了清楚起见,我只是添加了其他信息。没有改变一般问题或疑问。不过,我必须清除它,因为您的答案并未提供我正在寻找的确切内容。但它确实为上面的问题提供了答案。只是不是我想知道的那个。如果没有其他答案出现,您的答案仍然会被接受,因为您提到的工具回答了我的问题并且无论如何都最接近 Pex。

标签: .net unit-testing pex-and-moles parameterized-unit-test


【解决方案1】:

如果您正在寻找其他适用于 .NET 的自动测试工具,请查看 FsCheck。这是Haskell's QuickCheck 到 F# 的端口。它也可用于其他 .NET 语言。

QuickCheck 也已移植到其他平台(ClojureCheckScalaCheck

*检查库与 Pex 不同完全,但有 similarities

如果您是指 .NET 的 parameterized tests(如编写带参数的测试),那么 .NET 中的所有主要测试框架(NUnit、MbUnit、xUnit)都支持这一点。

【讨论】:

  • 是吗?你能写一个参数化测试的简单 NUnit 示例吗?这是我第一次听说 NUnit 支持参数化单元测试......它是否运行类似于 Pex 工作方式的测试探索?
  • 好吧,我检查了 FsCheck,它说它针对随机生成的值进行测试,如果您问我,这甚至比手动测试更糟糕。半复杂单元最终几乎不会覆盖测试代码...... Pex 非常聪明地根据 if 语句条件选择值,因此覆盖所有路径比尝试一些随机的有限值集要容易得多。
  • @Robert:您似乎将 parameterized 测试与 generated 测试混淆了。此外,如果这是您第一次听说 *Check 库,请花点时间通读一遍。
  • @Robert:NUnit 中的参数化测试:nunit.org/index.php?p=parameterizedTests&r=2.5
  • 不,我不会混淆这两者。 Pex 确实提供了单元测试生成,但它也可以运行自定义参数化单元测试。但是感谢您将我指向 nUnit 的文档。但是 NUnit 提供的功能基本上只是为您提供了测试合并的可能性。与 Pex 所做的相比,测试的代码覆盖率仍然仅限于开发人员编写的内容(他们通常很懒惰),后者提供了某些相关的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
相关资源
最近更新 更多