自从我安装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测试资源管理器成功找到单元测试或在给出的例子中显示问题。


当前回答

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

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

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

样本回购

VS bug报告

其他回答

我在VS 2017找到我的UnitTest时也遇到了麻烦。这不是约翰问的确切问题-但这是谷歌的第一个结果,我来寻找,所以我想分享我的问题。

我有一个遗留的解决方案,从VS2010回到VS2013, VS2015。现在在VS2017中,[TestMethod]属性的名称空间似乎已经改变了。

在它被使用之前

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

我在项目中创建了一个新的Test.dll,这是默认使用的

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

所以我的解决方案是从VS2017中创建一个新的UnitTest项目。也许更改旧测试项目的程序集引用也会起作用。新的参考VS2017确实发现了这些单元测试。

就我的情况而言,以上这些对我都没有帮助。 但是,我把NUNit3TestAdapter降级到3.8.0版本,然后升级到最新版(3.10.0)。

请确保您正在使用正确的Microsoft.NET.Test.Sdk:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

不要使用预发布版本。或者你必须改变控制台应用程序(不是库)。 我也有类似的问题,但使用最新版本(15.0.0),它又开始工作了。

此外,你可能还需要补充:

<ItemGroup>
  <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

但我认为没有必要。

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

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

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

检查NUnit 3测试适配器是否已启用。在我的情况下,我已经安装了很久以前,但突然它被禁用了。我花了好长时间才决定检查这部分……