如何在Visual Studio 2015的“创建单元测试”上下文菜单中添加其他测试项目?

6
我该如何将现有的测试项目添加到Visual Studio 2015中“创建单元测试”的右键上下文菜单中?
它只显示其中一个测试项目(该项目是使用右键上下文操作创建的)。另一个项目是使用新项目向导创建的,但未显示。

Missing Projects Available Unit Test Projects

有没有方法将现有的单元测试项目添加到下拉列表中?
1个回答

1

我还没有确定哪些步骤是必需的,但以下是允许我将现有项目添加到Intellitest“创建单元测试”列表中的步骤:

  • 引用Microsoft.Pex.Framework程序集
  • 在属性项目的特殊文件夹中添加“PexAssemblyInfo.cs”文件。根据需要进行编辑。
  • 在.csproj文件中,在<PropertyGroup>节点中添加<TestProjectType>"UnitTest"</TestProjectType>标记
  • 在.csproj文件中,在<PropertyGroup>节点中添加<IsCodedUITest>False</IsCodedUITest>标记(可能不是必需的)
  • 在.csproj文件中,在<ProjectTypeGuids>标记中添加“{3AC096D0-A1C2-E12C-1390-A8335801FDAB}”(测试项目类型)

编辑:示例PexAssemblyInfo.cs内容

using Microsoft.Pex.Framework.Coverage;
using Microsoft.Pex.Framework.Creatable;
using Microsoft.Pex.Framework.Instrumentation;
using Microsoft.Pex.Framework.Settings;
using Microsoft.Pex.Framework.Validation;

// Microsoft.Pex.Framework.Settings
[assembly: PexAssemblySettings(TestFramework = "xunit-2.0")]

// Microsoft.Pex.Framework.Instrumentation
[assembly: PexAssemblyUnderTest("{YOUR-PROJECT-NAME}")]
[assembly: PexInstrumentAssembly("System.Runtime.Extensions")]
[assembly: PexInstrumentAssembly("System.Linq.Expressions")]
[assembly: PexInstrumentAssembly("System.Threading")]
[assembly: PexInstrumentAssembly("System.Reflection.Extensions")]
[assembly: PexInstrumentAssembly("System.Reflection")]
[assembly: PexInstrumentAssembly("System.Diagnostics.Debug")]
[assembly: PexInstrumentAssembly("System.Runtime")]
[assembly: PexInstrumentAssembly("System.Threading.Tasks")]
[assembly: PexInstrumentAssembly("System.Collections")]

// Microsoft.Pex.Framework.Creatable
[assembly: PexCreatableFactoryForDelegates]

// Microsoft.Pex.Framework.Validation
[assembly: PexAllowedContractRequiresFailureAtTypeUnderTestSurface]
[assembly: PexAllowedXmlDocumentedException]

// Microsoft.Pex.Framework.Coverage
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Runtime.Extensions")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Linq.Expressions")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Threading")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Reflection.Extensions")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Reflection")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Diagnostics.Debug")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Runtime")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Threading.Tasks")]
[assembly: PexCoverageFilterAssembly(PexCoverageDomain.UserOrTestCode, "System.Collections")]

PexAssemblyInfo.cs 是用来做什么的? - Silthus
它定义了一些 Pex 特定的设置,例如测试程序集、引用程序集等。您可以从自动生成的 Intellitest 项目中复制/粘贴其中一个设置。 - Alexis
我找不到名为PEX或类似的程序集。此外,通过向导创建Xunit测试项目并不会创建PexAssemblyInfo.cs文件。 仅添加TestProjectType和IsCodedUiTest行并不能使该项目在向导中显示。 - Silthus
确切的程序集名称是“Microsoft.Pex.Framework”。如果您查看Intellitest生成的项目引用,它将被列出。 “PexAssemblyInfo.cs”文件位于该项目的“属性”文件夹下。 - Alexis
好的,但我不是在尝试创建IntelliTests,只是普通的“创建单元测试”。 - Silthus
1
确实,我的错。实现您的设计最简单的方法似乎是比较两个项目:一个是使用“创建单元测试”自动生成的项目,另一个是您自己的测试项目。 - Alexis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接