使用 c# 测试项目而不是 c# 类库项目来进行单元测试的动机是什么?
谢谢。
默认情况下,测试项目会MSTest
自动为您添加所有引用。还为您创建了一些默认示例,例如简单示例测试。
使用类项目,您也可以从中构建一个测试项目,但您必须MSTest
自己手动添加引用。确实不是大问题,但测试项目可以节省您的时间和麻烦。
编辑:
如评论中所述,两种项目类型之间的最大区别在于,对于类项目,您可以选择您喜欢的任何单元测试框架。
但是,根据https://msdn.microsoft.com/en-us/library/bb166488,我无法找到有关 {3AC096D0-A1C2-E12C-1390-A8335801FDAB} 标识的此测试项目子类型的太多信息。 aspx项目子类型可以包括自定义:
- saving additional data in the project file,
- adding or filtering items in the Add New Item dialog box,
- controlling how assemblies are debugged and deployed,
- and extending the project Property Pages dialog box.
实际上,右键单击上下文菜单中的测试项目-> 在“添加”子菜单中,您可以看到测试项目“单元测试”、“有序测试”、“通用测试”。添加“单元测试”会为 MSTest 生成一个测试类模板。
它还包含其他数据,例如:
<TestProjectType>UnitTest</TestProjectType>
<IsCodedUITest>False</IsCodedUITest>
因此,这个项目子类型似乎是特定于 MSTest 的。
因此,如果不使用 MSTest(例如使用 xUnit),我更喜欢类库。
额外的论点可能是这样的事实,即在 .Net Core 项目中进行调味(子类型化)不是做事的理想方式,实际上 .Net Core 测试模板是类库。见讨论:https ://social.msdn.microsoft.com/Forums/vstudio/en-US/061aaf74-bb13-4646-9d69-064f6f1b8ef6/net-core-project-subtypes
奖励:如果您不选择现有项目,xUnit.net.TestGenerator 扩展会生成一个测试项目子类型(可能是因为它只是 VS 生成工具的 xUnit 适配器)