运行 使用 .NET Core MSTest 进行单元测试:"The following TestContainer was not found..."

Running unit tests with .NET Core MSTest: "The following TestContainer was not found..."

我到处搜索都找不到这个异常的答案。 This question 是我搜索时出现的主要问题,但它没有解决这个问题。

[7/8/2018 6:22:22 PM Informational] Executing test method 'CoreScraper.FlyerScraper.GetAllCurrentFlyers'
[7/8/2018 6:22:22 PM Error] System.InvalidOperationException: The following TestContainer was not found 'C:\Users\Username\Documents\Visual Studio 2017\Projects\ProductApp\CoreScraper\bin\Debug\netcoreapp2.0\CoreScraper.dll'
   at Microsoft.VisualStudio.TestWindow.Controller.TestContainerProvider.<GetTestContainerAsync>d__61.MoveNext()

"CoreScraper" 是项目的名称。当我查看那个 ...\netcoreapp2.0\ 文件夹时,CoreScraper.dll 肯定在里面。我是 运行 通过在测试方法中右击并选择 "Run Tests" 进行测试。测试 运行 我第一次 运行 就很好,但从那以后它就给了我这个错误。我关闭了 Visual Studio 并重新打开,删除了 bin\ 的内容,清理并重建了项目等

问题是 NuGet 包 Microsoft.NET.Test.Sdk 没有安装。通过 NuGet 包管理器在项目中安装这个包解决了这个问题。

这对我来说并不直观,因为我有另一个单元测试项目在没有 Microsoft.NET.Test.Sdk 包的情况下运行良好,但该项目是 .NET Framework 4.6.2。

正如@Marathon55 所说,安装 Microsoft.NET.Test.Sdk 解决了问题,但就我而言,我必须再安装 2 个软件包 MSTest.TestFrameworkMSTest.TestAdapter。可能会帮助某人

今天我在 Visual Studio 2017 年的 xUnit 测试中遇到了类似的问题。 我的观察:

  1. 我在 Release/Debug 模式之间切换时出现问题。
  2. 解决方案:重新启动 Visual Studio 并解决了问题。

备注 经过一些Google/Bing,我发现每个人都通过安装一些软件包得到了解决方案。但是在我的例子中,之前一切正常,因此决定不安装任何额外的东西。

希望对您有所帮助。

对我有用的:

删除 .vs 文件夹中的文件夹。

但是你还是不能删除那个文件夹?

可能是因为 Live Unit Testingtesthost.exetesthost.x86.exe 进程。

我有这个问题。我尝试了在此问题中发布的所有答案。在我的例子中,出了什么问题——有人错误地修改了 app.config 文件。结果,该文件在其中获得了一个新的配置部分,但没有定义该部分。

失踪<configSections></configSections>

同时拥有 <someConfigSection . . . . />

我简单地修复了 app.config 并且测试开始工作。 This is the source of the original suggestion app.config 可能是这个问题的罪魁祸首

这就是我的情况。

  1. 我的 Visual Studio 解决方案有 9 个项目
  2. 我从解决方案中删除了一个测试项目,但仍保留在磁盘上
  3. 从磁盘中删除上述测试项目
  4. Visual Studio 的测试资源管理器仍然显示来自已删除项目的测试,但无法 运行 它们(因此显示 OP 提到的错误)
  5. 删除 .vs 文件夹最终删除了旧项目的所有引用。现在测试资源管理器显示预期的测试数量。

我不知道这是否对任何人有帮助,但我在尝试以 .net Standard 为目标的 Specflow 项目中遇到了这个问题。最后,解决此问题的唯一方法是改用 .net Core。

我使用的是 .NET Framework v4.6.1,而不是 .NET Core,但我也遇到了这个完全相同的错误。我遵循了上面的家伙/女孩提供的步骤组合。

  • 安装 MSTest.TestAdapter NuGet 包
  • 安装 MSTest.TestFramework NuGet 包
  • 安装 Microsoft.NET.Test.Sdk NuGet 包(可能不需要?不确定)
  • 关闭所有 运行 VS 2019 实例并删除 vs/ 文件夹
  • 重启 VS 2019
  • 重建测试项目

...然后就成功了。希望这对某人有所帮助!

我在 .NET Core 项目中遇到了同样的问题。解决方法如下:

  1. 创建空文件夹(任意名称)
  2. 运行 命令“dotnet new mstest”。 此命令创建一个 unit-test 项目,其中包含所有必需的 nuget 包! 然后你可以检查the.csproj文件,这里是:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <RootNamespace>my_project_unittest</RootNamespace>
        <IsPackable>false</IsPackable>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0">
        <PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
        <PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
        <PackageReference Include="coverlet.collector" Version="1.2.0" />
      </ItemGroup>
    </Project>

我是 运行 VS2019,版本 16.7.2。 我通过删除隐藏的 TestStore 文件夹('.vs[解决方案名称]\v16\TestStore')解决了我的问题。切换分支时,似乎存在于另一个分支中的单元测试项目被缓存在该 TestStore 文件夹中。

在我的例子中,我搞乱了测试项目,并在某个时候决定更改配置:

<Project Sdk="Microsoft.NET.Sdk">

<Project Sdk="Microsoft.NET.Sdk.Web">

但后来撤消了更改..:)

然后我遇到了和这里的每个人一样的问题。在进行了无数次重建、禁用 resharper、清理缓存、文件夹、降级包、删除包等之后。-我决定创建一个新的测试项目并进行比较配置(令人惊讶的是新项目的测试在调试模式下工作)!

长话短说 - 检查 Properties 文件夹。测试项目应该没有这样的文件夹! 该文件夹可能是在以下时间创建的我之前更改了SDK版本。

删除此文件夹并重建项目后,我终于可以调试测试了!没有其他解决方案有效。

当我将新测试项目添加为“Class 库”项目而不是“单元测试项目”时,我遇到了这个问题。它找到了我的测试,但找不到 运行。

通过删除 class 库项目并使用新的单元测试项目重新开始来修复它。