我有一个带有核心功能的库(“Base.dll”),附带了单元测试项目(“Base.Test.dll”),它们有一个单独的构建定义。我有依赖这些核心功能的项目(“SomeTool.dll”)以及附加的单元测试(“SomeTool.Test.dll”)。
此外,我有一个特殊的单元测试项目(“Base.Test.Structure.dll”),它检查在二进制文件编译到的目录的父目录中找到的所有* .csproj文件,如果它们已配置为正确的方式,例如<LangVersion>latest</LangVersion>
。
激活门控签到并具有Base构建定义后,不必在每个工具的每个构建中运行Base.Test。因此,我想在
中调整Visual Studio测试任务的“测试程序集”字段中的默认模式**\$(BuildConfiguration)\*.test*.dll;-:**\obj\**
到
**\$(BuildConfiguration)\*.test*.dll;-:**\obj\**;-:**\Base.*;+:**\Base.Test.Structure.dll
然而,结构测试不会被发现并且不会被执行。在没有工具特定单元测试的工具构建定义中,我得到“没有发现结果发布。”。
我怀疑在模式中的“ - :”之后不可能使用“+:”。有人能证实吗?还有另一种方法可以实现我的目标吗?
答案 0 :(得分:1)
Visual Studio Test任务只是使用 Visual Studio Test runner 。测试具有Visual Studio测试的框架。
测试装配:此字段指定从中测试装配 应该选择测试。
- 可以使用通配符
- 可以用分号
分隔多个路径- 路径相对于源目录
例如,
**\commontests\*test*.dll; **\frontendtests\*test*.dll;-:**\obj\**
或$(Build.SourcesDirectory)\Tests\*tests*.dll;-:$(Build.SourcesDirectory)\Tests\Integrationtests.dll
包含模式以“
+
:”开头,并排除带有“-
:”的模式 (默认为包含)。对于Javascript测试,这将指向.js 包含测试的文件。有“;”的文件夹/文件在 他们的名字应该是“;;”在输入中。
未声明doc在模式中的“ - :”之后无法使用“+:”。
博客的评论是正确的,所有排除表达式始终优先于包含表达式,因此如果文件与包含表达式和排除表达式都匹配,则不包含该文件。
对于新版本的vststest task,它会将-
更改为!
。关于minimatch patterns的官方文件也明确宣布:
领先!更改要排除的包含模式的含义。<强> Exclude patterns 强>