10

使用 c# 测试项目而不是 c# 类库项目来进行单元测试的动机是什么?

谢谢。

4

2 回答 2

7

默认情况下,测试项目会MSTest自动为您添加所有引用。还为您创建了一些默认示例,例如简单示例测试。

使用类项目,您也可以从中构建一个测试项目,但您必须MSTest自己手动添加引用。确实不是大问题,但测试项目可以节省您的时间和麻烦。

编辑:

如评论中所述,两种项目类型之间的最大区别在于,对于类项目,您可以选择您喜欢的任何单元测试框架。

于 2013-08-28T21:07:51.527 回答
0

但是,根据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 适配器)

于 2018-04-28T18:15:36.860 回答