【问题标题】:Running unit tests with .NET Core MSTest: "The following TestContainer was not found..."使用 .NET Core MSTest 运行单元测试:“未找到以下 TestContainer...”
【发布时间】:2018-12-17 18:21:05
【问题描述】:

我搜索了高低,找不到此异常的答案。 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 肯定在其中。我通过右键单击测试方法并选择“运行测试”来运行测试。我第一次运行它时测试运行良好,但从那以后它就给了我这个错误。我已经关闭了Visual Studio并重新打开,删除了bin\的内容,清理并重建了项目等。

【问题讨论】:

    标签: c# selenium-webdriver mstest asp.net-core-2.1


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        1. 在发布/调试模式之间切换时出现问题。
        2. 解决方案:重启 Visual Studio 即可解决问题。

        注意 在搜索了一些 Google/Bing 之后,我发现每个人都通过安装一些包来解决问题。但是在我的情况下,之前一切正常,因此决定不安装任何额外的东西。

        希望对你有帮助。

        【讨论】:

        • NUnit 和 Visual 2019 对我来说同样的问题。只需要重新启动。
        【解决方案4】:

        什么对我有用:

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

        但您仍然无法删除该文件夹?

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

        【讨论】:

        • 这对我有用。在我的情况下,错误出现在 1. 升级到 VS 2019 和 2. 使用 nuget 更新编译器之后。我不需要安装任何额外的东西
        • 从 .net core 2.2 升级到 3.1 后,这对我也有用
        • 这也解决了我的问题。从 3.0 升级到 3.1 后,运行一些测试导致路径中的 netcoreapp3.0 出错。
        • 我们现在可能生活在 .NET Core 世界中,但有些事情总是需要以传统的 Microsoft 方式进行修复。
        • @Nick,这也发生在我身上。奇怪的问题
        【解决方案5】:

        我遇到了这个问题。我尝试了这个问题中发布的每个答案。以我为例,出了什么问题 - 有人错误地修改了 app.config 文件。结果,该文件在其中获得了一个新的配置节,但没有定义该节。

        缺少&lt;configSections&gt;&lt;/configSections&gt;

        虽然拥有&lt;someConfigSection . . . . /&gt;

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

        【讨论】:

          【解决方案6】:

          这就是我的情况。

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              我使用的是 .NET Framework v4.6.1,而不是 .NET Core,但我也遇到了同样的错误。我按照上面的家伙/女孩提供的步骤组合。

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

              ...然后它就起作用了。希望这对某人有帮助!

              【讨论】:

                【解决方案9】:

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

                1. 创建空文件夹(任意名称)
                2. 运行命令“dotnet new mstest”。 此命令创建一个单元测试项目,其中包含所有必要的 nuget 包! 然后你可以检查.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>

                【讨论】:

                  【解决方案10】:

                  我正在运行 VS2019,版本 16.7.2。 我通过删除隐藏的 TestStore 文件夹('.vs[solution name]\v16\TestStore')解决了我的问题。似乎另一个分支中存在的unittest项目在切换分支时缓存在该TestStore文件夹中。

                  【讨论】:

                    【解决方案11】:

                    在我的情况下,我正在搞乱测试项目,并在某个时候决定更改配置:

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

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

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

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

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

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

                    【讨论】:

                      【解决方案12】:

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

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2010-09-26
                        • 2013-09-14
                        • 2020-04-16
                        • 1970-01-01
                        • 2019-12-27
                        • 2011-12-25
                        • 1970-01-01
                        相关资源
                        最近更新 更多