我正在尝试为我的项目设置AppVeyor(here),我似乎无法找到让它从.NET Core Unit测试项目运行测试的方法。
这是AppVeyor项目的链接:ci.appveyor.com/project/Sergio0694/neuralnetwork-net
我还有一个.NET Framework Unit测试项目,它执行一些基于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
跳过的
NetworkTest
类别只是一组非常占用CPU的测试,需要一些时间才能运行,因此我现在只是跳过它们以使构建更快完成。
项目构建正常,但AppVeyor也继续在其他NeuralNetwork.NET.Cuda.Unit.dll程序集中运行测试,这会按预期失败并导致整个构建被标记为失败。
所以我的问题是:
编辑:我尝试设置“所有程序集排除”选项以及所有这些组合以指定要跳过的.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
答案 0 :(得分:1)
.NET Core测试检测与检测经典.NET Framework测试的工作方式不同。在搜索.NET Core测试时,AppVeyor会查找具有某些属性的Resources exceeded during execution: The query could not be executed in the allotted memory. ORDER BY operator used too much memory.
文件,而不是查找程序集。程序集筛选器不适用于.NET Core测试(但类别筛选器可用)。
抱歉混淆。创建this issue以实现类似于程序集名称过滤的行为,但基于.csproj
文件名进行.NET Core测试自动检测。
现在解决方法是做一个“黑名单”,例如列出您不希望在.csproj
下运行的所有.NET Framework程序集。您可以使用通配符语法使其更加紧凑,如here所述。