我在 Visual Studio 2013 中有一个简单的解决方案,它由一个 Web 项目、一个库项目和一个单元测试项目组成。当我打开解决方案并尝试运行单元测试时,Visual Studio 不会发现它们。要运行测试,我尝试转到菜单并选择测试 -> 运行 -> 运行所有测试或打开测试资源管理器窗口。通过这些方法,Visual Studio 没有在解决方案中发现任何测试。
首先创建一个简单的单元测试项目并尝试运行测试,Visual Studio 知道发现测试并且我可以运行它。然后,如果我打开我以前的解决方案,Visual Studio 现在会发现所有测试。我尝试保存我的解决方案,但关闭它并重新打开,而不先创建单元测试项目,Visual Studio 不会再次找到测试。这是一种非常奇怪的行为,我不知道为什么会这样。
我曾经在这个项目中单独工作,该项目使用与 Visual Studio 团队基础集成的源代码控制 git。当一个新元素进入项目并且我需要通过在线源代码管理重新创建解决方案时,Visual Studio 的问题没有发现单元测试开始。在此之前,所有的测试都是由visual studio发现的。
为了创建单元测试,我使用了 dll Microsoft.VisualStudio.QualityTools.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);
}
}
我注意到我必须不时做一些事情才能让测试正确显示。
如果您的解决方案位于需要管理员访问权限才能读/写的受保护驱动器中,则有时只会出现部分测试。在这种情况下,绝对以管理员身份运行 VS。如果您的解决方案是 64 位,请确保测试 > 测试设置 > 默认处理器架构设置为 x64。有时它会设置为 x86。将其设置为 x64,然后重建。有时只需重新启动 Visual Studio 就可以解决问题,因为测试资源管理器将再次启动。不要忘记实际构建测试项目/解决方案。 (如果您希望它与其余项目一起构建,请右键单击您的解决方案 > 属性 > 配置属性 > 配置 > 选中您的测试项目的“构建”框)确保测试位于您的公共部分测试班
如果您使用 NUnit,请务必先下载 NUnit Adapter。
转到工具 → 扩展和更新... → 在线 → 搜索“NUnit 测试适配器”。
确保您的测试类是 public
,以便可以找到它。如果您要引用另一个类,请确保相同。
此外,有时如果您没有断言或者您没有使用 [TestMethod]
装饰测试,则可能无法识别测试。
还有 2 件事:1) 异步单元测试充其量是有趣的,最坏的情况是根本没有。看看 Stephen Cleary 的this article,如果您感兴趣的话,请远离那里。
2) 如果您使用 NUnit 并遇到同样的问题,请记住它是用于 Nunit 的 [TestCase]
,而不是 [TestMethod]
如上所述,这是我在代码项目上发布的 article,其中包含 MSTest
和NUnit
,如果您想试一试并确保您没有遗漏任何内容。
using Microsoft.VisualStudio.TestTools.UnitTesting;
我遇到了同样的问题,但其他解决方案都没有奏效。原来我使用的是带有 2 适配器的 NUnit 3 框架。
如果您使用的是 NUnit 3,请转到扩展和更新并安装 NUnit3 测试适配器。
我时不时遇到这个问题。对我有用的是关闭 Visual Studio 并转到文件夹:
%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache
并删除它的内容。
一旦你打开 Visual Studio 并再次加载你的项目,测试资源管理器应该包含你的测试
%LocalAppData%\Microsoft\VisualStudio\16.0_03b7a93c\ComponentModelCache
XUnit 用户可能会注意到测试资源管理器窗口不再列出任何测试。要使测试再次被发现,请尝试 this important tip,在下面突出显示。
如果您在发现或运行测试时遇到问题,您可能是 Visual Studio 中损坏的运行程序缓存的受害者。要清除此缓存,请关闭 Visual Studio 的所有实例,然后删除文件夹 %TEMP%\VisualStudioTestExplorerExtensions。还要确保您的项目仅链接到单个版本的 Visual Studio 运行程序 NuGet 包 (xunit.runner.visualstudio)。
https://i.stack.imgur.com/a0EJD.png
对于未来的谷歌人,我遇到了一个罕见的情况导致了这种情况。
在我的基础测试类中,我有一个名为 TestContext 的属性。这干扰了 MSTest 保留的 TestContext 属性,导致我的所有测试都对 VS/Resharper 隐藏,除了一个(不是从基础继承的)。
public
。
https://i.stack.imgur.com/ZCtFs.gif
我的问题是因为我的单元测试方法不是无效的,它正在接收参数。
我发现 VS 测试资源管理器没有发现标记为 async void
的单元测试方法。这似乎是因为 VS 没有任何方法可以等待测试完成并决定它是否成功。如果您绝对需要一个异步运行的测试方法,那么让它返回一个任务,而不是像 async Task
。我发现这为我解决了这个问题。
尝试将所有项目构建为 MSIL(任何 CPU)而不是 x86/x64。奇怪地为我工作
虽然 AndyG 的解决方案有效,但更持久的解决方案可能是将 PreferredToolArchitecture 环境变量设置为“x64”,方法是:
How to make Visual Studio use the native amd64 toolchain
或通过:
控制面板 |系统与安全 |系统 |高级系统设置|环境变量
首选工具架构 = x64
DefaultToolArchitecture = Native64Bit
PROCESSOR_ARCHITECTURE = x64
处理器架构 = x64
我遇到了同样的问题,我再次记得(这种情况以前发生过),在解决方案平台菜单上选择“混合平台”以及其他答案都是有效的。
我设法将我的添加为
public static void TestMethod1(){}
删除静电后开始工作....
https://i.stack.imgur.com/JFXRB.jpg
转到项目菜单 > 配置管理器检查您的测试项目平台是否与项目的其余部分匹配,并检查构建然后重建。
刚遇到这个,我没有看到与我相似的类似案例。
在我的测试项目的 .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
后,它起作用了。
你只需要安装这个包:
https://i.stack.imgur.com/rZv2n.png
为了让测试显示在测试资源管理器窗口中,我必须安装包管理器中不可用的 NUnit3 测试适配器 3.0。
从 https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d 下载
我有同样的问题。
这是由于我添加到我的项目(3.2.0)和我安装的测试适配器(2.0.0)中的 NUnit 版本不兼容。
要修复,请使用“工具 > 扩展和更新”并搜索 NUnit3 测试适配器,之后它发现了我的测试。
干杯
我们只是为了争论,您需要在您的测试项目中使用 X64 架构,以便正确构建依赖项(如我的情况)。您可能需要在“测试--测试设置”菜单下修改默认处理器架构。将此设置为 X64 允许我的测试资源管理器使用 Microsoft.VisualStudio.TestTools.UnitTesting 找到我的测试。
很抱歉添加到长列表中,但我遇到了一个完全不同的问题。首先,我想提一下我在测试资源管理器中单击“全部运行”然后在 Visual Studio 中查看构建输出窗口时发现了我的问题。您必须积极观看它,因为之后消息会消失。
至于这个问题,看起来在扫描测试期间,DLL 被加载并枚举了它的测试类型。这会导致引用被加载,如果在此过程中发生任何故障,测试将不会显示在资源管理器中。我有两个问题阻止了测试 DLL 被成功加载:
配置文件中仍然存在绑定重定向(重定向到比测试项目中引用的版本更低的 NIBerate 版本)。
冲突的程序集引用(无法加载第二级引用)。 AsmSpy 是寻找这些的好工具。
如果您从网络共享或共享的“我的文档”目录加载 Visual Studio(在我的情况下为 VS 2015 社区)解决方案,您将遇到此麻烦。我通过将解决方案及其基础项目移动到本地文件夹来解决它。
花了 2 天后......以上都不适合我。唯一的“解决方案”是:转到项目属性-> 构建选项卡。然后单击窗格右下角的高级按钮。将“调试信息:”更改为“完整”,然后单击“确定”。
https://i.stack.imgur.com/pxwxF.jpg
https://i.stack.imgur.com/lzFQx.jpg
我遇到了同样的问题。查了一下,发现这个dll没有建好,放到正确的文件夹下。我一更改配置,它们就出现了。 - 项目构建选项,应该使用什么文件夹? - 构建菜单条目构建配置,它们应该被检查。
为我修好了。
对于 Visual Studio 2013.5,清除解决方案中的 \TestResults 目录会有所帮助。 Visual Studio 损坏了存储已发现测试的 mdf 文件,从而阻止了单元测试的发现。
确保您的所有项目都使用相同的配置运行。在您项目的属性 => 调试 => 平台下拉列表中,选择您在其他项目中确定的适当平台(对我来说是“任何 CPU”)。
我知道如果未构建解决方案,则找不到单元测试,因此可以尝试(构建解决方案),但该解决方案就像帮助台询问您的计算机是否已插入...
在干净的重建并没有为我解决问题之后,运行完整的批处理构建确实解决了它。
有同样的问题;测试突然停止被发现。
Nunit 测试适配器不知何故被禁用。在扩展管理器中单击启用为我修复了它。
我遇到了同样的问题,直到我意识到我犯了一个剪切/粘贴错误并在测试前离开了 [Test Method]
。