VisualStudio2013不发现单元测试

我有一个简单的解决方案,在可视化工作室2013年,是由一个网络项目,一个图书馆项目和一个单元测试项目组成。当我打开解决方案并尝试运行单元测试时,它们不会被 Visual Studio 发现。为了运行测试,我尝试进入菜单并选择 Test-> Run-> Run all Test 或者打开 Test Explorer 窗口。通过这些方法,Visual Studio 在解决方案中没有发现任何测试。

首先创建一个简单的单元测试项目,并尝试运行测试,Visual Studio 知道发现测试,我可以运行它。然后,如果我打开我以前的解决方案可视化工作室现在发现所有的测试。我试图保存我的解决方案,但是关闭它并重新打开,没有首先创建单元测试项目,可视化工作室不会再次找到测试。这是一个非常奇怪的行为,我不知道为什么会发生这种情况。

我曾经在这个项目中独自工作,使用与视觉工作室团队基金会集成的源代码控制 git。Visual Studio 没有发现单元测试的问题始于项目中出现新元素以及需要通过在线源代码管理重新创建解决方案的时候。在此之前,所有的测试都是由 Visual Studio 发现的。

为了创建单元测试,我使用 dll Microsoft。VisualStudio.高质素工具。UnitTestFramework.我的 Visual Studio 版本是: Microsoft Visual Studio Express 2013 for Web Version 12.0.30723.00 Update 3。我的版本。Net 框架是4.5.50938。

我所有的测试都是这样的:

[TestClass]
public class Service1Test
{
[TestMethod]
public void Test1()
{
Assert.IsTrue(True);
}
}
93367 次浏览

确保您的测试类是 public,以便可以找到它。如果你在引用另一个类,确保它们是一样的。

另外,有时候如果没有 Asserts 或者没有用 [TestMethod]装饰测试,测试可能无法识别。

还有两件事: 1)异步单元测试充其量表现得很奇怪,而在最糟糕的情况下则一点也不奇怪。看看 Stephen Cleary这篇文章,如果你感兴趣的话就不要看。

2)如果您使用 NUnit 并且遇到了相同的问题,请记住它是 NUnit 的 [TestCase],而不是 [TestMethod]

上面已经说过,这里有一个 文章我已经张贴在代码项目,与 MSTestNUnit,如果你想给它一个旋转,并确保你没有错过任何东西。

我注意到有些事情我必须时不时地去做才能让测试正确地显示出来。

  1. 如果您的解决方案位于需要管理员访问才能读/写的受保护驱动器中,有时只会出现一部分测试。在这种情况下,一定要以管理员的身份运行 VS。

  2. 如果您的解决方案是64位的,请确保 Test > Test Settings > Default Processor Architecture 被设置为 x64。有时候会设置成 x86。设置为 x64然后重建。

  3. 有时只需重新启动 VisualStudio 就可以解决问题,因为测试资源管理器将重新启动。

  4. 不要忘记实际构建测试项目/解决方案。(如果你想让它和其他的项目一起构建,右键点击你的解决方案 > 属性 > 配置属性 > 配置 > 勾选测试项目的“构建”框)

  5. 确保测试在测试类的 public部分中

我当时面临着同样的问题,而且我记得(这种情况以前也发生过) ,在解决方案平台菜单上选择“混合平台”和其他答案一样有效。

如果您使用 NUnit,请确保首先下载 NUnit 适配器。

去工具 & rarr; 扩展和更新 & hellip; & rarr; 在线搜索“ NUnit 测试适配器”。

我经常遇到这种问题。对我来说有效的方法是关闭 Visual Studio 并进入文件夹:

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

并删除它的内容。

打开 VisualStudio 并再次加载项目后,“测试资源管理器”应包含您的测试

我也遇到了同样的问题,但是其他的解决方案都不管用。原来我使用的是带有2适配器的 NUnit 3框架。

如果您正在使用 NUnit3,请转到 Extended 和 Update 并安装 NUnit3测试适配器。

对我来说,它是将“解决方案配置”改为“调试”(而不是发布)。

转到项目菜单 > 配置管理器检查您的测试项目平台匹配项目的其余部分,并检查是建立然后重建。

我也遇到了同样的问题。 经过调查发现 DLL 没有建立, 并放入正确的文件夹。一旦我改变我的配置 他们出现了。 - 项目生成选项,应该使用什么文件夹? - 构建菜单条目构建配置,它们应该被检查。

帮我解决了问题。

对于 Visual Studio 2013.5,清除解决方案中的 TestResults 目录有所帮助。VisualStudio 损坏了存储已发现测试的 mdf 文件,从而阻止了单元测试的发现。

对于未来的谷歌用户来说,我遇到了一个罕见的情况,导致了这种情况。

在我的基础测试类中,我有一个名为 TestContext 的属性。这干扰了 MSTest 的保留 TestContext 属性,导致我的所有测试都对 VS/Resharper 隐藏起来,除了一个(它没有从基本测试继承)。

尝试将所有项目构建为 MSIL (任意 CPU)而不是 x86/x64

确保所有项目都使用相同的配置运行。 在项目的 Properties = > Debug = > Platform in drop down 列表中,选择在其他项目中确定的合适平台(对我来说是“ AnyCPU”)。

只是碰巧遇到这种情况,因为我没有看到一个类似的情况,类似于我的。

在我的测试项目的 .csproj文件中,NUnit 引用隐私设置为 False:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
<Private>False</Private>
</Reference>

在我把 <Private>设置成 True之后,它工作了。

我的问题是因为我的单元测试方法不是 无效,而是接收参数。

  • 我知道,如果没有构建解决方案,就找不到单元测试,所以可以尝试(构建解决方案) ,但是这个解决方案就像帮助台询问您的计算机是否已插入..。
  • 在一个干净的重建没有为我修复问题之后,运行一个完整的批量构建确实修复了它。

我还加上了我的名字

public static void TestMethod1(){}

我移除静电后就开始工作了。

出现了同样的问题,测试突然停止了被发现。

单元测试适配器以某种方式被禁用。单击扩展管理器中的激活为我修复了它。

您只需要安装这个软件包:

NUnit TestAdapter 测试适配器 NUnit TestAdapter

为了让测试显示在 Test Explorer 窗口中,我必须安装 NUnit3 Test Adapter 3.0,这在 Package Manager 中是不可用的。

https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d下载

我也遇到了同样的问题,直到我意识到在测试之前出现了剪切/粘贴错误并停止了 [Test Method]

在我的情况下,问题是因为我的 class被标记为 abstract

只要删除 abstract关键字。

我也有同样的问题。

这是由于我在项目中添加的 NUnit 版本(3.2.0)和我安装的 Test Adapter (2.0.0)不兼容造成的。

为了修复这个问题,使用“ Tools > Extended and Update”并搜索 NUnit3 Test Adapter,它在那之后发现了我的测试。

干杯

另一个解决办法:

打开命令提示符,键入 set,并验证 PROCESSOR _ ARCHITECTURE 是否设置正确,如果需要,则更改为 x86或 AMD64。

来源: https://connect.microsoft.com/VisualStudio/feedback/details/873170/vs2012-vstest-console-exe-error-incompatible-target-platform-settings-x86-with-system-architecture-arm-occurs-when-processor-architecture-is-not-set

当 AndyG 的解决方案奏效时,一个更持久的解决方案可能是将 PreferredToolArchitecture 的环境变量设置为“ x64”,或者通过:

如何使 VisualStudio 使用原生的 amd64工具链

或:

  • 控制面板 | 系统和安全 | 系统 | 高级系统设置 | 环境变量
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR _ Architecture = x64
  • ProcessorArchitecture = x64

为了便于讨论,我们假设您需要在测试项目中使用 X64体系结构,以便正确构建依赖项(就像我的情况一样)。您可能需要在 测试——测试设置菜单下修改默认处理器体系结构。将其设置为 X64允许我的测试资源管理器使用 Microsoft 查找我的测试。VisualStudio.TestTools 测试工具。单元测试。

我发现标记为 async void的单元测试方法不会被 VS 测试资源管理器发现。这似乎是因为 VS 没有任何办法等待测试完成并决定它是否成功。如果您绝对需要一个测试方法来异步运行,那么让它返回一个 Task,而不是像 async Task那样。 我发现这为我解决了问题。

很抱歉又添加了一个长长的清单,但是我有一个完全不同的问题。 首先,我想提一下,当我在 Test Explorer 中单击“ Run All”,然后在 Visual Studio 中观察构建输出窗口时,我发现了自己的问题。你必须主动观看,因为之后信息就会消失。

至于这个问题,看起来像是在扫描测试期间,DLL 被加载并且它的测试类型被枚举。这会导致加载引用,如果在此过程中发生任何故障,则资源管理器中将不会显示测试。我遇到了两个阻碍测试 DLL 成功加载的问题:

  • 配置文件中仍然有一个绑定重定向(重定向到比测试项目中引用的版本更低的版本 NHiberate)。
  • 冲突的程序集引用(无法加载第二级引用)。AsmSpy是一个很好的工具来寻找这些。

我在 TFS 2015的测试中遇到了同样的问题。 我遇到的问题是我的测试不再显示了。测试适配器找不到任何测试。 我删除了微软的所有参考资料。VisualStudio.高质素工具。UnitTestFramework,现在它们又出现了。我希望我的回答能帮到别人

XUnit 用户可能会注意到“测试资源管理器”窗口不再列出任何测试。要使测试可再次发现,请尝试下面突出显示的 这个重要的提示

如果在发现或运行测试时遇到问题,您可能是 VisualStudio 内部运行程序缓存损坏的受害者。若要清除此缓存,请关闭 VisualStudio 的所有实例,然后删除文件夹% TEMP% VisualStudioTestExplorerExtended。还要确保您的项目只链接到 Visual Studio runner NuGet 包的单个版本(xunit.runner.Visual Studio)。

Type in TEMP to find target folder

如果从 网络共享作为共享的一部分的“文档”目录加载 VisualStudio (在我的例子中是 VS2015Community)解决方案,就会遇到这种麻烦。我通过将解决方案及其底层项目移动到本地文件夹来解决这个问题。

我在 VisualStudio2015中遇到过类似的问题。一旦我做了一个 async Task单元测试,Visual Studio 就会遇到发现它、找到它的源代码的问题,而且它不允许我调试它。

原来有一个 与 PostSharp 的 bug导致了这种行为,并且我正在使用的测试项目启用了 PostSharp。

在我的例子中,解决方案是禁用单元测试项目的 PostSharp,方法是在 <PropertyGroup>元素中的 csproj项目文件的开头添加以下内容:

<SkipPostSharp>True</SkipPostSharp>

转到 Nuget 软件包管理器并按照下面的步骤下载 Nunit Adapter。 enter image description here

在我的例子中,在驱动程序停下来进入[ SetUp ]之后,我将 NUnit 从2.X 更新为3.X。我尝试从 NuGet 安装 NUnit 3适配器,但是没有用。然后,我在 TestDriven (3.8)上卸载了当时的版本,转而安装了3.10。它(又)开始工作了。

确保项目被标记为测试项目。可以通过将下面的 Xml添加到 Csproj项目文件来实现这一点。

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

花了两天的时间,以上这些对我都不管用。唯一的“解决方案”是: 转到 project properties-> Build Tab。然后单击窗格右下角的“高级”按钮。将“ Debug Info:”更改为“ full”并单击 OK。

以下是截图: enter image description here

enter image description hereenter image description here

在我的情况下,我必须更新两个 NuGet 软件包。 - MSTest-TestAdapter - MSTest-TestFramework

在使用 VS2008的遗留项目中遇到同样的问题。在测试输出窗口中,它一直打印单元测试 DLL 不是 Nunit Test。我使用的是来自 https://archive.codeplex.com/?p=nunitforvs的插件 NunitForVS,是的,我按照说明将 ProjectTypeGuids 添加到 proj 文件中。

结果发现文件夹 Users < user > AppData Roaming Nunit 中的 NunitSettings.xml 文件是空的。

我从 Users < user > AppData local Nunit 文件夹中复制了镜像文件,这个文件看起来很完整,即使没有重新启动 Studio,它也开始重新发现 Nunit 测试。

希望这对谁有帮助。