您如何在Travis-CI中使用多个dotnet核心单元测试目标框架?

问题描述 投票:0回答:1

我正在开发针对.NetStandard的api,并希望使用不同版本的.NetCore对其进行测试。

我想针对所有当前支持的.NetCore LTS版本运行单元测试,但是我无法弄清楚如何针对当前安装的SDK构建单元测试。

。NetCore当前受支持的版本是2.1和3.1。我可以使用<TargetFrameworks>指定单元测试项目可以同时处理这两个目标,并且在我的开发机上运行时,一切正常。但是,与我的开发机不同,Travis运行测试时,仅安装了一个SDK(这很好-我想确切地知道要针对什么进行测试)。但是,单元测试项目希望两个SDK都能同时提供。如果仅针对2.1,则Travis 3.1失败,如果针对3.1,则2.1失败。

因此,有没有一种方法可以通过单个单元测试项目在Travis-CI上针对.NetCore的两个LTS版本进行测试?

.net-core travis-ci
1个回答
0
投票

能够使其正常工作。

  1. 在单元测试项目中,使用TargetFrameworks而不是TargetFramework来定位多个框架。我相信您必须手动编辑csproj文件,我认为无法从Visual Studio UI中进行设置。 <TargetFrameworks>netcoreapp2.1;netcoreapp3.1</TargetFrameworks>
  2. 在.travis.yml中,在dotnet:部分中包含一个框架,在before_install:部分中显式安装另一个框架,然后在script:部分中对每个框架显式调用测试:
dotnet: # Include one of the frameworks
  - 2.1.804 # EOL for 2.1: 2021.08.21
before_install:
  # explicitly install other targeted SDKs side by side
  - sudo apt-get install dotnet-sdk-3.1
script:
  # explicitly identify the framework when invoking the tests
  - dotnet test UnitTests/UnitTests.csproj -f netcoreapp2.1
  - dotnet test UnitTests/UnitTests.csproj -f netcoreapp3.1
© www.soinside.com 2019 - 2024. All rights reserved.