AppVeyor 忽略单元测试的显式程序集名称

AppVeyor ignores explicit assemly name for Unit tests

我正在尝试为我的项目设置 AppVeyor (here),但我似乎无法找到一种方法来仅对其进行 运行 来自 .NET Core 单元测试项目的测试.

这是 AppVeyor 项目的 link:ci.appveyor.com/project/Sergio0694/neuralnetwork-net

我还有一个 .NET Framework 单元测试项目,它执行一些基于 GPU 的测试,所以当 运行 使用 AppVeyor 时它们会失败,因为它们缺少 CUDA GPU 和所需的 cuDNN 文件。

这是我的配置:

version: 1.0.{build}
image: Visual Studio 2017
before_build:
- cmd: dotnet restore
build:
  verbosity: minimal
test:
  assemblies:
    only:
    - NeuralNetwork.NET.Unit.dll
  categories:
    except:
    - NetworkTest

That NetworkTest category that's skipped is just a group of tests that are very CPU intensive and require some time to run, so I'm just skipping them now to make the builds finish sooner.

项目构建良好,但 AppVeyor 也在另一个 NeuralNetwork.NET.Cuda.Unit.dll 程序集中保持 运行ning 测试,这按预期失败并导致整个构建被标记为失败。

所以我的问题是:

编辑: 我尝试设置 "all assemblies excluding" 选项和所有这些组合以指定要跳过的 .NET Framework 单元测试项目:

测试一直在执行(按预期失败),我在这里遗漏了什么吗?

编辑 #2: 这是我现在使用的解决方法,我已经手动排除了 .NET Framework 项目中的所有测试类别,到目前为止这似乎正在工作(即使看起来不太干净):

version: 1.0.{build}
image: Visual Studio 2017
configuration: Release
before_build:
- cmd: dotnet restore
build:
  verbosity: minimal
test:
  categories:
    except:
    - CuDnnInceptionLayerTest
    - CuDnnLayersTest
    - GpuExtensionsTest
    - SerializationTest

.NET Core 测试检测与经典 .NET Framework 测试检测的工作方式不同。在搜索 .NET Core 测试时,AppVeyor 会查找具有特定属性的 .csproj 文件,而不是程序集。程序集筛选器不适用于 .NET Core 测试(但类别筛选器有效)。

抱歉造成混淆。创建 this issue 以实现类似于程序集名称过滤的行为,但基于 .csproj 文件名进行 .NET Core 测试自动检测。

目前的解决方法是 "black list",例如在 assemblies/except 下列出所有您不想 运行 的 .NET Framework 程序集。您可以使用通配符语法使其更紧凑,如 here.

所述