自动生成.NET单元测试
有单元测试生成之类的东西吗?如果是这样...
...运作良好吗?
.... NET有哪些自动生成解决方案?
...是否有使用此类技术的示例?
...这仅适用于某些类型的应用程序,还是可以用来代替所有手动编写的单元测试?
解决方案
看看Pex。它是一个Microsoft Research项目。从网站:
Pex从手写的参数化单元测试到基于动态符号执行的自动探索性测试生成单元测试。
我相信就TDD而言,单元测试的生成毫无意义。
我们仅进行单元测试,以确保我们(作为开发人员)在设计和规格方面处于正轨。一旦我们开始自动生成测试,它将失去该目的。当然,这可能意味着100%的代码覆盖率,但是这种覆盖率是毫无意义的,空洞的。
自动化的单元测试还意味着策略是"事后测试",这与TDD的"事前测试"宗旨相反。同样,TDD与测试无关。
话虽这么说,我相信MSTest确实有一个自动的单元测试生成工具-我能够在VS2005上使用它。
我已经使用NStub对我的课程进行了测试。它运作良好。
我同意乔恩的观点。某些类型的测试(例如自动模糊测试)肯定会从自动生成中受益。尽管我们可以使用单元测试框架的功能来完成此任务,但这并不能实现与良好的单元测试覆盖率相关的目标。
我已经使用工具来生成测试用例。我认为它对于高层,面向最终用户的测试非常有效。这是用户验收测试的一部分,而不仅仅是纯单元测试。
我使用单元测试工具进行此验收测试。它运作良好。
请参阅构建测试用例的工具。
有一种名为AgitarOne(www.agitar.com)的商业产品,可以自动生成JUnit测试类。
我没有使用过它,所以无法评论它的有用性,但是如果我现在正在做一个Java项目,我会在研究它。
我不知道有一个.net等效版本(Agitar宣布了一个.net版本,但AFAIK从未实现过)。
Selenium通过网页上的用户命令生成单元测试,非常漂亮。
Parasoft .TEST具有测试生成功能。它使用NUnit框架进行测试描述和断言评估。
可以通过自动生成场景(构造输入和调用测试的方法)并创建基于当前代码库行为的断言来准备回归测试套件。后来,在测试的代码库发展之后,断言指示回归或者可以轻松地再次记录。