C#测试项目与C#类库项目的区别

时间:2013-08-28 21:02:12

标签: c#

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

感谢。

2 个答案:

答案 0 :(得分:6)

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

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

编辑:

正如评论中所指出的,两个项目类型之间的最大区别在于,通过类项目,您可以选择您喜欢的单元测试框架。

答案 1 :(得分:0)

我无法找到有关{3AC096D0-A1C2-E12C-1390-A8335801FDAB}确定的此测试项目子类型的过多信息但是,根据https://msdn.microsoft.com/en-us/library/bb166488.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适配器)