运行 使用 .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.TestFramework
和 MSTest.TestAdapter
。可能会帮助某人
今天我在 Visual Studio 2017 年的 xUnit 测试中遇到了类似的问题。
我的观察:
- 我在 Release/Debug 模式之间切换时出现问题。
- 解决方案:重新启动 Visual Studio 并解决了问题。
备注
经过一些Google/Bing,我发现每个人都通过安装一些软件包得到了解决方案。但是在我的例子中,之前一切正常,因此决定不安装任何额外的东西。
希望对您有所帮助。
对我有用的:
删除 .vs
文件夹中的文件夹。
但是你还是不能删除那个文件夹?
可能是因为 Live Unit Testing、testhost.exe
或 testhost.x86.exe
进程。
我有这个问题。我尝试了在此问题中发布的所有答案。在我的例子中,出了什么问题——有人错误地修改了 app.config
文件。结果,该文件在其中获得了一个新的配置部分,但没有定义该部分。
失踪<configSections></configSections>
同时拥有 <someConfigSection . . . . />
我简单地修复了 app.config
并且测试开始工作。
This is the source of the original suggestion app.config
可能是这个问题的罪魁祸首
这就是我的情况。
- 我的 Visual Studio 解决方案有 9 个项目
- 我从解决方案中删除了一个测试项目,但仍保留在磁盘上
- 从磁盘中删除上述测试项目
- Visual Studio 的测试资源管理器仍然显示来自已删除项目的测试,但无法 运行 它们(因此显示 OP 提到的错误)
- 删除
.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 项目中遇到了同样的问题。解决方法如下:
- 创建空文件夹(任意名称)
- 运行 命令“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 库项目并使用新的单元测试项目重新开始来修复它。
我到处搜索都找不到这个异常的答案。 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.TestFramework
和 MSTest.TestAdapter
。可能会帮助某人
今天我在 Visual Studio 2017 年的 xUnit 测试中遇到了类似的问题。 我的观察:
- 我在 Release/Debug 模式之间切换时出现问题。
- 解决方案:重新启动 Visual Studio 并解决了问题。
备注 经过一些Google/Bing,我发现每个人都通过安装一些软件包得到了解决方案。但是在我的例子中,之前一切正常,因此决定不安装任何额外的东西。
希望对您有所帮助。
对我有用的:
删除 .vs
文件夹中的文件夹。
但是你还是不能删除那个文件夹?
可能是因为 Live Unit Testing、testhost.exe
或 testhost.x86.exe
进程。
我有这个问题。我尝试了在此问题中发布的所有答案。在我的例子中,出了什么问题——有人错误地修改了 app.config
文件。结果,该文件在其中获得了一个新的配置部分,但没有定义该部分。
失踪<configSections></configSections>
同时拥有 <someConfigSection . . . . />
我简单地修复了 app.config
并且测试开始工作。
This is the source of the original suggestion app.config
可能是这个问题的罪魁祸首
这就是我的情况。
- 我的 Visual Studio 解决方案有 9 个项目
- 我从解决方案中删除了一个测试项目,但仍保留在磁盘上
- 从磁盘中删除上述测试项目
- Visual Studio 的测试资源管理器仍然显示来自已删除项目的测试,但无法 运行 它们(因此显示 OP 提到的错误)
- 删除
.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 项目中遇到了同样的问题。解决方法如下:
- 创建空文件夹(任意名称)
- 运行 命令“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 库项目并使用新的单元测试项目重新开始来修复它。