unit testing用例生成器

有人试过.Net的任何unit testing生成器吗?

我认为虽然它不会替代任何编写function的人所编写的良好unit testing,但我认为它会带走一些工作并成为我们可以更好地进行unit testing的起点。

谢谢。

unit testing生成是执行unit testing的错误方法。 进行unit testing的正确方法是在编写function代码之前创建测试用例,然后开发代码直到测试validation,这称为TDD(测试驱动开发)。

unit testing生成的一个关键原因是一个坏主意是因为如果现有代码中存在任何错误,则会针对这些错误生成测试,因此如果您将来修复它们,那么错误的测试将会失败并且您’当它实际被修复时,我会假设某些东西被破坏了。

但是,由于代码是编写的,它现在处于桥下。 可能的错误unit testing比没有unit testing好。 我总是喜欢NUnit,这里有一个NUnit兼容的测试生成器(非常实惠)。

你考虑过Pex吗? 它来自微软研究院。

Pex自动生成一个小型测试套件,具有针对.NET程序的高代码覆盖率。 为此,Pex执行系统程序分析(使用动态符号执行,类似于路径限制模型检查)来确定参数化unit testing的测试输入。 Pex通过监视执行跟踪来了解程序行为。 Pex使用约束求解器生成新的测试输入,这些输入执行不同的程序行为。

多年前,我修改了Haskell的QuickCheck ,以便通过生成测试实现纯粹的function性测试驱动开发 。 我的解决方案是保存PRNG种子,因为它产生了一个失败的测试用例,并使用同一种子运行未来的测试。

我最近得到了一份.NET工作,谷歌发现MbUnit在2004年确实支持生成测试。我也发现了最新的Gallio ,但是我在使用它时遇到了一些麻烦,我不记得到底是什么。

因此,TDD和生成测试不是互相排斥的,Gallio是我见过的唯一最近的.NET选项,我不记得为什么我现在不使用它。

这是一篇包含基于代码的测试生成工具列表的文章
http://home.mit.bme.hu/~micskeiz/pages/code_based_test_generation.html

我为.Net创建了一个unit testing生成器ErrorUnit

使用发电机进行TDD开发当然很实用; 例如,在对按钮单击发生的事件进行编码时,以TDD方式使用ErrorUnit的方法是:

1)首先手动创建测试以确保有按钮按下事件; 然后根据纯TDD创建事件并进行测试。

2)然后运行程序,使用按钮导航到屏幕,并在事件方法中设置断点,按下按钮

3)当点击断点时,您可以单击ErrorUnit的“添加unit testing”以生成unit testing,其中所有对象和当前数据库状态已经被模拟。 (根据需要重复使用不同的用例状态)

4)然后,您可以将创建的unit testing更改为具有Assert,以匹配您希望按钮单击按TDD执行的操作的结果。

5)然后编写click事件后面的代码,并运行由ErrorUnit(对于Arrange和Act)和part自定义(对于Assert)生成的部分的测试。

通过这种方式,您可以节省大部分时间用于输入“安排和行动”。

ErrorUnit还可以与错误记录一起使用,通过在单元中序列化和模拟测试错误时的确切状态来重现其他环境中的错误; 将TDD带入生产问题解决方案。