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

Sil*_*hus 5 unit-testing xunit visual-studio visual-studio-2015

如何在Visual Studio 2015中的"创建单元测试"的右键单击上下文菜单中添加现有的测试项目?

它仅显示其中一个测试项目(项目是使用右键单击上下文操作创建的).另一个项目是使用新项目向导创建的,未显示.

缺少项目 可用的单元测试项目

有没有办法将现有的单元测试项目添加到下拉列表中?

Ale*_*xis 1

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

  • 参考Microsoft.Pex.Framework装配
  • 在 Properties 项目的特殊文件夹中添加“PexAssemblyInfo.cs”文件。进行相应的编辑。
  • 在.csproj文件中,添加<TestProjectType>"UnitTest"</TestProjectType>标签,在<PropertyGroup>节点中
  • 在.csproj文件中,添加<IsCodedUITest>False</IsCodedUITest>标签,在<PropertyGroup>节点中(可能不需要)
  • 在 .csproj 文件中,将“{3AC096D0-A1C2-E12C-1390-A8335801FDAB}”(测试项目类型)添加到<ProjectTypeGuids>标记中

编辑:示例 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")]
Run Code Online (Sandbox Code Playgroud)