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

时间:2020-02-24 19:30:11

标签: .net-core travis-ci

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

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

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

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

1 个答案:

答案 0 :(得分: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
相关问题