自动生成 .NET 单元测试
本文关键字:单元测试 NET 自动生成 | 更新日期: 2023-09-27 17:47:21
有单元测试生成这样的东西吗?㞖。。。
。效果好吗?
。有哪些可用于 .NET 的自动生成解决方案?
。有使用这种技术的例子吗?
。这仅适用于某些类型的应用程序,还是可用于替换所有手动编写的单元测试?
看看Pex。这是一个Microsoft研究项目。从网站:
Pex通过基于动态符号执行的自动探索性测试,从手写的参数化单元测试生成单元测试。
2019年更新:
正如评论中提到的,Pex现在被称为IntelliTest,是Visual Studio Enterprise Edition的一个功能。它支持以 MSTest、MSTest V2、NUnit 和 xUnit 格式发出测试,并且它是可扩展的,因此您可以将其与其他单元测试框架一起使用。
但请注意以下注意事项:
- 仅支持面向 .NET Framework 的 C# 代码。
- 不支持 x64 配置。
- 仅在 Visual Studio Enterprise Edition 中可用
TDD而言,单元测试生成是没有意义的。
你只做单元测试,以确保你(作为开发人员)在设计和规范方面走上正轨。一旦你开始自动生成测试,它就会失去这个目的。当然,这可能意味着 100% 的代码覆盖率,但这种覆盖率将是毫无意义和空洞的。
自动化单元测试还意味着您的策略是测试后,这与TDD的测试前原则相反。同样,TDD与测试无关。
话虽如此,我相信MSTest确实有一个自动单元测试生成工具 - 我能够在VS2005中使用一个。
2017 年更新:
单元测试样板生成器适用于VS 2015-2017,并且正在维护中。似乎像广告上所说的那样工作。
Parasoft .TEST 具有测试生成功能。它使用 NUnit 框架进行测试描述和断言评估。
可以通过自动生成场景(构造输入和调用测试方法)和创建基于当前代码库行为的断言来准备回归测试套件。稍后,在测试中的代码库发展之后,断言表示回归或可以轻松地再次记录。
我创建了ErrorUnit
.它从暂停的Visual Studio
或错误日志生成MSTest
或NUnit
单元测试;到目前为止模拟类变量、方法参数和 EF 数据访问。请参阅 http://ErrorUnit.com
没有单元测试生成器可以做所有事情。单元测试通常分为安排、行动和断言三部分;安排部分是单元测试的最大部分,它设置了测试的所有先决条件,模拟了测试中将要操作的所有数据,单元测试的 Act-部分通常是一行。它激活正在测试的代码部分,传入该数据。最后,测试的 Assert 部分采用 Act 部分的结果并验证它是否符合预期(当确保没有错误时,可以是零行)。
单元测试生成器通常只能在单元测试创建时执行 Arrange, 和 Action 部分;但是,单元测试生成器通常不编写 Assert 部分,因为只有您知道什么是正确的,什么是不正确的。因此,为了完整性,需要手动输入/扩展单元测试。
我同意乔恩的观点。某些类型的测试,如自动模糊测试,肯定会从自动生成中受益。虽然可以使用单元测试框架的工具来完成此操作,但这并不能实现与良好的单元测试覆盖率相关的目标。
我已经使用NStub为我的类存根测试。它工作得很好。
我使用工具来生成测试用例。 我认为它适用于更高级别的、面向最终用户的测试。 这是用户验收测试的一部分,比纯粹的单元测试更重要。
我使用单元测试工具进行此验收测试。 效果很好。
请参阅用于构建测试用例的工具。
有一个名为AgitarOne(www.agitar.com)的商业产品,可以自动生成JUnit测试类。
我没有使用过它,所以不能评论它有多有用,但如果我现在正在做一个 Java 项目,我会看看它。
我不知道 .net 等价物(Agitar 确实宣布了一个 .net 版本,但 AFAIK 它从未实现)。
这个线程很旧,但为了所有开发人员,有一个很好的库叫做 nunit:
https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.TestGeneratorNUnitextension
编辑:请使用XUNIT(微软支持):https://github.com/xunit/xunit
自动生成的测试:https://marketplace.visualstudio.com/items?itemName=YowkoTsai.xUnitnetTestGenerator
优秀的开发
Selenium从网页上的用户命令生成单元测试,非常漂亮。