自从我安装VS 2017以来,我一直在与它斗争。现在,单元测试似乎只能从命令行“dotnet test”运行。

我的项目是。net Core 1.1.1。我已经安装了SDK和1.1.1的框架更新。

我在MSDN (https://msdn.microsoft.com/en-us/library/ms182532.aspx)上尝试了样本,也失败了。

所有用于测试和主项目的NuGet包都是最新的。测试项目和主项目的构建都没有错误。测试从命令行成功运行。

有人让单元测试在VS 2017中运行吗?如果是的话,是怎么做的?

谢谢, 约翰


更新-扩展

下面是一个简单的测试项目的例子,它不能在GitHub上运行。这是一个xUnit的例子,但我已经尝试了在MS测试中内置的NUnit和visual studio。无论我做了什么测试或做了什么更改,我都无法让VS测试运行器找到任何测试。

我的努力

删除VS测试缓存文件DEL %TEMP%\VisualStudioTestExplorerExtensions 重新启动和 关闭/打开测试资源管理器 为xUnit安装Microsoft.DotNet.InternalAbstractions(见SO post) 对于NUnit,确保适配器安装和NUnit包相同的版本(3) Test -> Test Settings ->默认处理器架构设置为x86

这个问题 谁能提供一个VS2017中。net Core 1.1.0解决方案的工作示例?csproj项目文件),其中VS测试资源管理器成功找到单元测试或在给出的例子中显示问题。


当前回答

我也有同样的问题。我的解决方案还可以,但当我突然打开解决方案时,我发现测试不见了。

最后,我把Microsoft.VisualStudio.TestPlatform.TestFramework和Microsoft.VisualStudio.TestPlatform.TestFramework. extensions包降级为一个非常旧的版本(使用NuGet管理器),测试方法出现了。然后我升级到最新版本,仍然有那里。

所以只要降级和升级包就可以了。

其他回答

我也面临着同样的问题,在我的情况下才能解决

我打开windows控制台(windows键+ cmd)。 导航到创建项目的文件夹。 执行命令“dotnet test”,它基本上与visual studio执行的测试相同,但当你通过控制台运行它时,它可以让你看到完整的跟踪。 我得到了这个错误信息"TestClass属性定义在非公共类mstest。testcontroller。basetest " 所以我去到测试用例并将其标记为公共,重新构建,我的测试被正确显示

在我的案例中,是解决方案中的UWP项目导致了这个问题。

当我卸载UWP项目时,发现了测试。当我加载回来,测试再次消失。

尝试卸载所有项目,只保留测试项目。十个重建方案和测试应该出现在测试运行器。逐个加载项目,并每次重新构建解决方案,以找出导致问题的项目

样本回购

VS bug报告

这个问题

问题是Visual Studio对机器上的dotnet核心版本感到“困惑”。当我进入控制面板->卸载程序时,我已经安装了8个不同的dotnet核心SDK和运行时。这在某种程度上导致VS在试图查找测试时无声地出现错误。

验证问题

您可以通过转到命令行并在$ dotnet——version上获取dotnet的版本来验证这个问题。如果你看到除了你安装的最新版本以外的任何东西,那么你的机器有一些不匹配,没有使用正确的版本。例子……如果你已经安装了dotnet核心1.0.1,但当你在命令提示符下看到版本时,它显示为1.0.0,这是一个问题。

解决方案

删除所有旧的东西。我开始只是我认为我需要删除(最古老的dotnet rc版本),但它仍然给出错误的版本时,测试的问题。最后,我承认要做一次彻底的清理。我…

卸载所有visual studio应用程序(在我的机器VS2015和VS2017上) 卸载所有版本的dotnet core(包括最新的)

在我的机器完全空了所有的VS和donet之后,我只安装了VS2017(它附带了最新的dotnet)。我创建了一个xUnit测试项目,测试资源管理器发现测试立即被解决了

这似乎有点过分,但我花了两周时间试图用其他方法解决这个问题。如果你有这个问题,尽管它可能需要你几个小时来卸载/重新安装,但它可能会节省你的时间。

参考文献

请参阅@epestic博客文章,在那里他提供了更多关于修复问题的细节。

解决方案是从单元测试项目中删除app.config文件。测试将重新出现!

该文件在bindingredirects中引用了一些在项目引用中没有实际出现的dll。重新添加项目严格需要的程序集绑定。

对我来说,我需要运行这个,它更新了单元测试项目的所有nunit适配器链接:

Install-Package Nunit3TestAdapter