使用.NET Core MSTest运行单元测试:“未找到以下TestContainer ...”

时间:2018-07-10 01:43:52

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

我搜索过高低,找不到该异常的答案。 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\的内容,清理并重建了项目,等等。

13 个答案:

答案 0 :(得分:9)

问题是未安装NuGet软件包Microsoft.NET.Test.Sdk。通过NuGet软件包管理器在项目中安装此软件包即可解决问题。

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

答案 1 :(得分:5)

对我有用的东西

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

答案 2 :(得分:3)

今天,我遇到了针对xUnit测试的Visual Studio 2017类似问题。 我的观察:

  1. 在“发布/调试”模式之间切换时出现问题。
  2. 解决方案:重新启动Visual Studio并解决了该问题。

注意 经过一番Google / Bing之后,我发现每个人都通过安装一些软件包获得了解决方案。但是就我而言,一切之前都在工作,因此决定不安装其他任何东西。

希望有帮助。

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

这就是我的情况。

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

我遇到了这个问题。我尝试过在此问题中发布的所有答案。在我的情况下,出了问题-有人错误地修改了app.config文件。结果,该文件在其中获得了一个新的配置部分,但未定义此部分。

缺少<configSections></configSections>

拥有<someConfigSection . . . . />

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

答案 8 :(得分:0)

对我来说,当我从发布模式切换回调试模式时,问题解决了。

(使用VS2019时)

答案 9 :(得分:0)

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

答案 10 :(得分:0)

我正在使用.NET Framework v4.6.1,而不是.NET Core,但我也遇到了与此完全相同的错误。我按照上面的家伙/女孩提供的步骤进行了组合。

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

...然后就可以了。希望这对某人有帮助!

答案 11 :(得分:0)

.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>

答案 12 :(得分:0)

就我而言,我搞砸了测试项目,并决定从以下位置更改配置:

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

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

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

然后,我和这里的每个人都面临着同样的问题。.经过无数次重建,禁用重新共享,清理缓存,文件夹,降级软件包,删除软件包等。-我决定创建一个新的测试项目并比较配置(令人惊讶的是,新项目的测试在调试模式下工作)!

长话短说-检查Properties文件夹。“测试”项目应该没有这样的文件夹!该文件夹可能是在我更改SDK版本时创建的较早。

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