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


当前回答

在.NET框架的情况下,在测试项目中以前有对以下dll的引用:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

我删除了它们,并添加了参考:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

然后所有的测试都出现了,并开始以与之前相同的方式工作。

我尝试了上面几乎所有的其他建议,但是简单地重新引用测试dll就可以了。 我把这个答案发给那些和我一样的人。

其他回答

有时,我发现如果在单元测试代码中有stackoverflow异常,visual studio会将该单元测试用例标记为未运行,并将停止运行该用例后面的其他测试用例。

在这种情况下,您必须找出导致stackoverflow异常的情况。

对我来说,创建一个在Visual Studio 2017中完美运行的新测试项目更容易……只需要复制测试文件,添加引用,并根据需要添加NuGet包。

在我的例子中,我将测试项目目标为x64体系结构,而测试设置体系结构(test >默认处理器体系结构)更改为x86。它们不匹配。

在将测试设置体系结构设置回x64并重新构建之后,所有测试都再次被发现。

我也遇到了同样的问题,并通过以下方法让它工作:

首先,关闭所有打开的VisualStudio实例并删除此文件夹:%TEMP%\VisualStudioTestExplorerExtensions(使用VisualStudio运行测试) 转到您的NuGet包管理器并首先安装Microsoft.NET.Test.Sdk (15.3.0-preview-20170425-07),然后安装xunit.runner.visualstudio (2.3.0- beta2 -build1309)。请参阅附带的NuGet截图,以查看我必须安装的所有包,以获得最新的VS 2017来检测我的测试。

我不得不禁用(旧的)运行设置文件。