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


当前回答

发现

上面的答案对我不起作用(重新启动,更新到版本1.1.18…我已经更新,删除临时文件,清除NuGet缓存等)。

我发现我对MSTest有不同的引用。TestAdapter和MSTest。框架在不同的测试项目(我的解决方案有两个)。一个指向1.1.18,就像…

packages.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... 但是另一个引用了1.1.11。上面的一些答案导致了这个发现,当重新启动VisualStudio后,在我的临时目录(% temp %\VisualStudioTestExplorerExtensions\)中出现了两个版本的库。

解决方案

只是更新我的包。配置到1.1.18版本是恢复我的单元测试功能在VS.。似乎有一些错误,不允许并排引用MSTest库。希望这对你有所帮助。

更多信息:

Visual Studio 2017 Ent: 15.5.6(我已经从15.0.1更新,希望修复这个问题,但我在两个版本都有)

其他回答

在我的例子中,我的一个测试类不是公共的。这使得整个套件无法运行。

但这是我是如何计算出来的==>似乎“输出”控制台将向您显示测试日志。您只需要从构建切换到测试。

这简单得令人尴尬。我希望我的尴尬能帮助到其他人。

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

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

不要阅读MSDN. net下的过期文章,核心相关资料在learn.microsoft.com下

https://learn.microsoft.com/en-us/dotnet/articles/core/testing/

一般来说,你需要一个。net Core控制台应用程序来包含单元测试用例。

只是有这个问题,visual studio无法找到我的测试,除了方法之外,无法看到运行它们的按钮,并且它们没有在项目中运行所有测试。

结果我的测试类不是公共的!公开它可以让VS发现测试。

从Visual Studio 2017迁移到2019时,我也遇到了同样的问题。我不得不在我所有的测试项目中重新安装Microsoft.NET.Test.Sdk。