Visual Studio测试播放列表架构在哪里?

时间:2019-02-20 19:58:31

标签: visual-studio nunit mstest

我正在使用NUnit测试适配器从“测试资源管理器”窗口在Visual Studio 2017中运行测试。我使用了一个包含我要运行的测试的测试播放列表文件。该文件的内容如下所示:

<Playlist Version="1.0">
    <Add Test="MyAssemblyName.MyTestFixture.MyTestMethod()" />
</Playlist>

这些Visual Studio播放列表文件是否有架构?如果是这样,它在哪里?如果没有,您可以在此处提供播放列表文件(<Add>除外)的有效XML属性的列表吗?

1 个答案:

答案 0 :(得分:3)

我也试图找到一个XSD,但是没有找到,所以我在Visual Studio dll上挖了一个东西,发现了这个 Microsoft.VisualStudio.TestWindow.Core.dll ,我使用dnSpy来查找C#代码,我在PropertyRule namespace

中找到了此类Microsoft.VisualStudio.TestWindow.Internal.Playlists

对于属性名称,所有这些属性均有效

PropertyRule.properties = ImmutableArray.Create<ValueTuple<string, TestPropertyType, string>>(new ValueTuple<string, TestPropertyType, string>[]
{
    new ValueTuple<string, TestPropertyType, string>("Solution", TestPropertyType.Solution, string.Empty),
    new ValueTuple<string, TestPropertyType, string>("Project", TestPropertyType.ProjectName, "TestWindow_ProjectName"),
    new ValueTuple<string, TestPropertyType, string>("Namespace", TestPropertyType.NamespaceName, "TestWindow_NamespaceName"),
    new ValueTuple<string, TestPropertyType, string>("Class", TestPropertyType.ClassName, "TestWindow_ClassName"),
    new ValueTuple<string, TestPropertyType, string>("TargetFramework", TestPropertyType.TargetFramework, "TestWindow_TargetFramework"),
    new ValueTuple<string, TestPropertyType, string>("Outcome", TestPropertyType.Outcome, "TestWindow_Outcome"),
    new ValueTuple<string, TestPropertyType, string>("Trait", TestPropertyType.Trait, "TestWindow_Traits"),
    new ValueTuple<string, TestPropertyType, string>("Test", TestPropertyType.FullyQualifiedName, "TestWindow_FullyQualifiedName"),
    new ValueTuple<string, TestPropertyType, string>("TestWithNormalizedFullyQualifiedName", TestPropertyType.NormalizedFullyQualifiedName, "TestWindow_TestGroup"),
    new ValueTuple<string, TestPropertyType, string>("DisplayName", TestPropertyType.DisplayName, "TestWindow_DisplayName")
});

查找“匹配”属性的代码

using System;
    
namespace Microsoft.VisualStudio.TestWindow.Internal.Playlists
{
  [Flags]
  public enum PropertyRuleMatchFlags
  {
    Contains = 0,
    Not = 1,
    Equals = 2,
    Subset = 4
  }
}

阅读代码后,我能够编辑播放列表XML以忽略某些项目,因此所有其他项目都会自动添加!