【问题标题】:unittests fails on build server with Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupBehavior单元测试在构建服务器上失败,无法加载类型\'Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupBehavior
【发布时间】:2022-11-21 13:35:17
【问题描述】:

我得到了一个可以在我的 PC 上正常构建和单元测试的程序集,但无法在构建 PC 上进行测试。它已经失败了大约一个月。我很可能做错了什么。这是我从构建服务器得到的响应。

16:29:38     Project "xyz.Utilities.UnitTests.csproj": VSTest
16:29:40     Test run for C:\Bin\Release\net5.0-windows\xyz.Utilities.UnitTests.dll (.NETCoreApp,Version=v5.0)
16:29:40     Microsoft (R) Test Execution Command Line Tool Version 16.11.0
16:29:40     Copyright (c) Microsoft Corporation.  All rights reserved.
16:29:40     
16:29:40     Starting test execution, please wait...
16:29:40     A total of 1 test files matched the specified pattern.
16:29:41     An exception occurred while invoking executor 'executor://mstestadapter/v2': Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupBehavior' from assembly 'Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

16:29:41     Stack trace:
16:29:41        at Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestExecutor.RunTests(IEnumerable`1 sources, IRunContext runContext, IFrameworkHandle frameworkHandle)
16:29:41        at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.RunTestsWithSources.InvokeExecutor(LazyExtension`2 executor, Tuple`2 executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle)
16:29:41        at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests.RunTestInternalWithExecutors(IEnumerable`1 executorUriExtensionMap, Int64 totalTests)
16:29:41     
16:29:41     
16:29:41     Test Run Failed.
16:29:41     
16:29:41     Build FAILED.
16:29:41         0 Warning(s)
16:29:41         0 Error(s)

我的项目文件很简单:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net5.0-windows</TargetFramework>
        <IsPackable>false</IsPackable>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
        <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
        <OutputPath>$(SolutionDir)\Bin\$(Configuration)</OutputPath>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
        <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
        <OutputPath>$(SolutionDir)\Bin\$(Configuration)</OutputPath>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="EasyTcp" Version="4.0.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
        <PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
        <PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
        <PackageReference Include="coverlet.collector" Version="3.1.0">
          <PrivateAssets>all</PrivateAssets>
          <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
    </ItemGroup>
    <ItemGroup>
      <ProjectReference Include="..\xyz.Utilities\xyz.Utilities.csproj" />
    </ItemGroup>
</Project>

我认为这与构建服务器上的 Visual Studio 版本有关。我们正在运行 Teamcity。有没有人有任何线索?

【问题讨论】:

  • 对于 net48 完整框架解决方案,我遇到了同样的情况。如果您在此期间发现了什么,请告诉我。对我来说,它也在本地发生,运行 dotnet 测试。我们的设置包括调用 ClassCleanupBehavior 的 specflow。
  • 嗯,我以某种方式修复了它......(非常有帮助 - 我知道,抱歉)但我最终迫使解决方案中的所有项目运行 <TargetFramework>net5.0-windows</TargetFramework> 并做了一个 dotnet.restore - 在我的 teamcity 构建步骤.. ...并在 $(SolutionDir)Bin\$(Configuration) 之后删除了一个 '\' ...
  • 好的,谢谢你回到我身边。

标签: visual-studio unit-testing csproj build-error


【解决方案1】:

将您的 nuget 包升级到最新版本,它应该可以解决您的问题。我认为 MSTest.TestAdapterMSTest.TestFramework 需要 2.2.8。

【讨论】:

  • 这可能是 juet 修复.. 嗯我在失败的单元测试项目中 har 2.2.7 和一个有效的 2.2.8 ...
  • 我升级为使用 2.2.8 & microsoft.net.test.sdk 17.0.0 并解决了问题
  • 我有完全相同的错误,但更新到版本 2.2.8 并没有解决问题。似乎是从我更新到 VS 2022 开始的。我将尝试安装最新的 VS 更新。
  • 我们发现,对于我们来说,在 csproj 文件中对 Microsoft.VisualStudio.TestPlatform.TestFramework* 的持续引用导致这些 NuGet 包在 VS 2022 中无法生效。
  • 见下图
【解决方案2】:

我已经按照建议升级了,现在工作正常。

【讨论】:

  • 你能把这个移到对答案的评论中吗
猜你喜欢
  • 2021-03-28
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多