为什么visual studio 2012找不到我的测试?

gvel 发布于 2019-02-13 .net 最后更新 2019-02-13 14:06 177 浏览

我有一些测试使用内置的Microsoft.VisualStudio.TestTools.UnitTesting,但无法让它们运行。 我正在使用Visual Studio 2012终极版。 我有两个项目的解决方案;在测试方法和参考Microsoft.VisualStudio.QualityTools.UnitTestFramework(版本10.0.0.0,运行时版本v2.0.50727)之前,一个人在课前测试了using Microsoft.VisualStudio.TestTools.UnitTesting[TestClass][TestMethod]。我已经尝试了网络框架3.5,4和4.5其他人给出了一个重新定位错误。 我试图建立解决方案和项目。测试浏览器有消息“构建你的解决方案来发现所有可用的测试。点击“全部运行”来构建,发现并运行解决方案中的所有测试。 所以问题是:如何让visual studio找到测试?


也试图遵循这一点:http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx,但没有成功:当我们被要求右键单击并选择create tests时,我陷入了开始部分。没有create tests
我有这个测试(它编译,但没有在测试资源管理器中显示):
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

我现在已经发现(见下面的删除答案),这是因为它位于共享驱动器上,但我还不知道如何避开它。 (关于安全设置可能)。
已邀请:

yalias

赞同来自:

从顶部的菜单栏... 测试 - >运行 - >所有测试 您还可以从Test Explorer查看所有测试(测试 - > Windows - >测试资源管理器) 进一步使用VS 2012,如果您错过了任何内容,请尝试使用右上角的快速启动栏进行搜索(Ctrl + Q)“测试” 希望这可以帮助。

riure

赞同来自:

看起来NUnit Framework 2.6.4与NUnit Test Adapter不兼容。在网站上它提到测试适配器只能与NUnit Framework 2.6.3一起使用。 这是我的问题:       1.我在VS2012中通过Nuget分别下载了NUnit和NUnit测试适配器。 NUnit以某种方式更新到2.6.4突然我没有看到我的测试用例列出。 固定:

  1. 卸载Nuget和Nuget测试适配器 一个。转到工具> Nuget> Nuget Pkg管理器>管理Nuget Pkg for Solution 湾列出已安装的包 C。点击管理 d。取消检查您的项目
  2. 安装包含NUnit 2.6.3 Framework的NUnit测试适配器
  3. 清洁/重建解决方案
  4. 打开测试>测试资源管理器>全部运行
我看到了所有的测试用例 希望这可以帮助

nnam

赞同来自:

这更像是为了帮助那些在这里结束而不是回答OP问题的人: 尝试关闭并重新打开visual studio,为我做了诀窍。 希望这有助于某人。

jeum

赞同来自:

对我而言,解决方案稍微复杂一点。 我刚刚将一个现有的解决方案带到我的机器上(从gitHub克隆),我们不跟踪Visual Studio创建的自动生成的.cs文件。 (对于每个要素文件,都有一个同名的.cs文件) 在没有关联的.cs文件的情况下打开解决方案实际上允许我导航到绑定的方法,因此看起来好像specflow已正确连接,但我无法在测试资源管理器中查看测试名称。 对于此问题,只需从项目中排除功能文件,然后重新包含它们,强制VS重新生成这些自动生成的代码隐藏文件。 之后,我能够在测试资源管理器中查看测试。

prerum

赞同来自:

检查您的测试项目是否仅设置为项目属性中的延迟符号 - >签名。如果是,请取消选择它并进行干净的重建。

qea

赞同来自:

Visual Studio 2015(第14节.....) - 同样的问题在这里 原因:NUnit和NUnit测试适配器的不同版本 在我的情况下,我有NUnit(3.5)和NUnit测试适配器的最新版本,但测试适配器不是正确的。对于NUnit 3及更高版本,必须使用NUnit3TestAdapter 解: 卸载了“故障”NUnint测试适配器并安装了UNit3TestAdapter v.3.5.0(最新版本为3.6.0但未使用它以使其与NUnit保持一致) 重建解决方案之后测试加快了:)

cvelit

赞同来自:

尝试在网络共享上打开解决方案时遇到了同样的问题。在这种情况下,测试资源管理器不会检测到任何单元测试。解决方案原来是: 控制面板 - > Internet选项 - >“安全”选项卡 - >单击“内部网”,将保存网络共享的服务器IP地址或主机名添加到“站点”列表中。 在这之后,我重新编译了解决方案,现在测试出现了。 这应该与@BigT的答案非常相似。

cet

赞同来自:

检查引用的程序集以查找可能将“Copy Local”设置为“False”的任何程序集。 如果您的测试项目构建到它自己的文件夹(例如bin / Debug)并且项目依赖于另一个程序集,并且References列表中的一个程序集被标记为Copy Local =“False”,则由于缺少依赖项而无法加载程序集构建后,您的测试不会加载。

gsint

赞同来自:

我在VS2013 Ultimate中遇到了同样的问题。我的问题是我正在创建Windows服务而忘记卸载它。所以服务正在运行,VS无法访问其中一个导致整个测试套件根本没有加载的DLL。

nin

赞同来自:

快速检查列表,解决一些常见的测试问题。确保:

  1. 测试类和测试方法是public
  2. 测试类具有[TestClass]属性
  3. 测试方法具有[TestMethod]属性
如果这没有帮助,请尝试清理,重建解决方案并重新启动Visual Studio。

wqui

赞同来自:

您可以右键单击测试方法,然后选择“运行测试/运行单元测试”选项。这应该会打开测试窗口。

mex

赞同来自:

我知道这是一个较旧的问题,但在Visual Studio 2015中,我遇到了新创建的测试类未被识别的问题。尝试了一切。最终成为问题的是该课程没有“包含在项目中”。我只是在重新启动Visual Studio时发现了这一点,并注意到我的测试类不在那里。在显示隐藏文件时,我看到它以及我编写的其他类都没有包括在内。希望有所帮助

veos

赞同来自:

根据我最近的经验,以上所有都不起作用。我的测试方法

public async void ListCaseReplace() { ... }
没有出现,但编译得很好。当我删除async关键字时,测试资源管理器中显示的测试结果。这是因为async void是一种“即发即忘”的方法。制作方法async Task,你将得到你的测试! 此外,没有将Test项目的配置设置为“Build”也会阻止测试显示。 Configuration Manager>检查您的测试以构建。

nquis

赞同来自:

我发现的一个问题是,如果解决方案在网络驱动器/网络位置/共享驱动器上运行,则在测试资源管理器中找不到测试(没有显示) 您可以通过添加环境变量来解决此问题。 COMPLUS_LoadFromRemoteSources并将其值设置为1

zsed

赞同来自:

添加我的答案,因为这是谷歌的最佳结果。 我正在使用Visual Studio 2015并且(在不知不觉中 - 我刚刚运行Install-Package NUnit)将NUnit3包NuGet安装到我的测试项目中。我已经安装了NUnit Test Adapter扩展,但我的测试仍未显示。 通过工具>扩展和更新安装NUnit3测试适配器为我解决了这个问题。

zsed

赞同来自:

我复制粘贴了方法声明,其中包含一个输入字符串参数。忘了删除输入参数。

  public void ExtractValueFromLineTest(string input) {}//test not discovered because of the string input param

kodit

赞同来自:

将我的解决方案从Microsoft Visual Studio 2012 Express for Web升级到Microsoft Visual Studio 2013时出现此问题。 我在2012年创建了一个单元测试项目,并在2013年开放后,单元测试项目不会在测试资源管理器中显示任何测试。每次我试图运行或调试测试失败,在输出窗口中说出以下内容:

    Failed to initialize client proxy: 
    could not connect to vstest.discoveryengine.x86.exe
我还注意到,在调试测试时,它正在启动一个Visual Studio 2012实例。这让我觉得单元测试项目仍然引用了2012.查看测试项目参考我意识到它的目标是错误的Microsoft Visual此版本的Visual Studio的Studio Unit Test Framework DLL:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
我将版本号从11.0更改为12.0:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
我重建了所有这一切,这解决了问题 - 所有测试都在测试资源管理器中找到,现在所有的测试都找到并且运行得很完美。

jalias

赞同来自:

这个问题似乎有很多不同的解决方案也可以添加我自己的: 关闭Visual Studio 重命名C:\ Users \ username \ AppData \ Local \ Microsoft \ VisualStudio \ 12.0 \ ComponentModelCache 到ComponentModelCache.old 运行Visual Studio,将重建组件缓存。

lipsum

赞同来自:

这个只是咬我一点。我在我的项目中添加了一个测试,但无法让它显示在Test Explorer中。我的旧测试都出现了。最后,我意识到我只是查看特定的播放列表,而我没有将新测试添加到播放列表中。如果您正在使用播放列表,请选择“所有测试”并查看VS是否找到您的测试并在测试资源管理器中显示它们。然后,您也可以将它们添加到所需的播放列表中。

lmagni

赞同来自:

我尝试了以上所有内容,但我的Visual Studio 2012仍未显示测试结果。最后我去了一个测试类,发现它有一个RootNamespace.FolderName,我删除了.FolderName把这个类放在root命名空间中,宾果游戏所有的测试都回来了! 无法理解为什么它与原始命名空间一直正常工作直到前几天。

eipsum

赞同来自:

尝试在VS2013 Ultimate中的网络共享上打开解决方案时遇到了同样的问题。 我打开后纠正了这个问题 控制面板 - > Internet选项 - >“安全”选项卡 - >单击“本地Intranet”,单击站点并确保勾选“自动检测Intranet网络”。

vet

赞同来自:

另一个可能阻止测试被发现的问题,通常是在测试输出窗口中显示一条消息,如:

Failed to configure settings for runsettings plugin 'VSTest Run Configuration' as it threw following exception:
'An error occurred while parsing EntityName. Line 1, position 8.'
Please contact the plugin author.
这可能是由于路径中的字符或文件名需要转义才能解析为xml。特别是&字符,如<和/不允许在目录或文件名中。这会导致测试发现失败并且无法识别测试,但我仍然可以通过单击边距使用Resharper手动运行测试。

rut

赞同来自:

这有时会奏效。 检查“测试”菜单下的处理器架构是否匹配 用于构建解决方案的那个。 测试 - >测试设置 - >默认处理器架构 - > x86 / x64 如其他帖子中所述,请确保您打开了“测试资源管理器”窗口。 测试 - > Windows - >测试资源管理器 然后使用测试重建项目应该使测试显示在测试资源管理器中。 编辑:正如Ourjamie在下面指出的那样,做一个干净的构建也可能有所帮助。 除此之外,还有一件事我遇到了: Configuration Manager中未选中“Build”复选框 对于我在解决方案下创建的新测试项目。 转到Build - > Configuration Manager。 确保您的测试项目已选中构建复选框 适用于所有解决方案配置和解决方案

iipsa

赞同来自:

谷歌搜索“视觉工作室无法看到测试”它带我到这里,所以我想我会分享我的问题。我可以构建我的解决方案,测试存在,但我看不到它们!它转变为我们这是IDE的一个怪癖,导致了这个问题。请参阅下面的图片以获得解释和修复: enter image description here

lillo

赞同来自:

我有时会得到同样的症状。 我做的是:
1.关闭Test Explorer窗口
2.清理解决方案
3.重建解决方案
4.从Test - > Windows - > Test Explorer重新启动Test Explorer窗口。 我在Test Explorer窗口中进行了测试。

vfugit

赞同来自:

我阅读了所有现有的答案,发现我的(xUnit)测试没有被发现,因为我删除了'未使用'的引用,更具体地说,xunit.execution.desktop。重新安装xUnit包修复了我的问题。

hquas

赞同来自:

由于这些答案都没有解决我遇到的原因,对于这个问题,我也会在这里添加我的答案。 就我而言,这是一个复制粘贴代码问题。我们有一个TestProjectA,其中有特定类型的测试我们想要提取给它自己的测试项目 - TestProjectB。现在的问题是,虽然TestProjectA中的测试继续显示正常,但新的TestProjectB中的测试未显示在VS测试资源管理器中 - 除非您专门构建TestProjectB或手动右键单击测试并运行它。 原因是在复制粘贴代码时,某些命名空间没有得到更新:

  • 在名称空间TestProjectA.ModuleA中的TestClassA中有一个TestMethodA(),文件路径为\TestProjectA\TestClassA.cs
  • 与名称空间TestProjectA.ModuleA中的TestClassB中的TestMethodA()以及文件路径\TestProjectB\TestClassB.cs
因此,Visual Studio在“输出”窗口中打印出一条消息,表明这两者的TestId相同,并且由于两个项目之间的TestId冲突而继续在测试资源管理器中显示TestProjectA而不是TestProjectB。将命名空间更正为\TestProjectB\TestClassB.cs PLACEHOLDER_FOR_CODE_16修复了该问题。

dipsam

赞同来自:

我有同样的问题,但有点不同。 我使用的是visual studio 2012.由于某种原因,只有初始生成文件的测试正在运行。但是另一个文件中的测试没有运行。试过这里发布的不同解决方案,没有用。 最后我发现我在测试类中有一个私有方法,这是类中的第一个方法。我只是在测试方法之后移动了私有方法;所以现在,[TestMethod]属性的方法是类中的第一个方法。奇怪,但现在它的工作原理。 希望有一天能帮助某人。

qut

赞同来自:

这是根据用户错误/愚蠢添加到列表中的另一个....我尝试了这个问题的各种答案,然后在配置管理器(构建菜单,配置管理器)中实现了我的测试项目未被攻击,所以它不是建造>。< 发布这个,希望它可以节省一个人,因为我刚刚做了一两个小时!

qea

赞同来自:

我有Visual Studio 2012,我在Test Explorer中看不到测试, 所以我安装了以下内容: NUnit Test Adapter 这解决了我的问题!

jvitae

赞同来自:

在我的例子中,我有3个测试项目,使用Visual Studio 2017创建(但我认为没关系),并且测试资源管理器中只发现了其中的两个。我意识到第三个项目有一个不同版本的Microsoft.VisualStudio.QualityTools.UnitTestFramework dll。 我在NuGet Manager中更新了它,测试出现了。

fet

赞同来自:

我有相同的症状,但在不同的情况下。 我不得不为Peter Lamberg的解决方案添加一个额外的步骤 - 清理您的解决方案/项目。 我的unittest项目针对x64。当我创建项目时,它最初的目标是x86。 切换到x64后,我的所有单元测试都消失了。 我不得不进入测试菜单 - >测试设置 - 默认处理器架构 - > x64。 他们仍然没有露面。 做了一个。 仍然没有出现。 最后做了一个清洁 然后他们出现了。 我发现清洁解决方案和清洁对于在设置发生变化时获得解决方案非常有用。有时我必须走极端并删除objbin目录并进行重建。

nerror

赞同来自:

这里的解决方案都没有帮助我。对于一个解决方案不会发现测试,而引用相同项目的另一个解决方案工作正常。我终于通过删除solutionname.v12.suo文件解决了这个问题。

et_sed

赞同来自:

我发现解决此问题的最佳方法是创建.proj msbuild文件,并将您遇到问题的单元测试项目添加到此文件中,并使用命令行版本的mstest执行测试。我在app.config中发现了一个小配置问题,只有在从mstest运行测试时才出现 - 否则测试项目就可以了。此外,您还会发现此方法的任何间接参考问题。一旦您可以使用mstest从命令行运行Unit测试,您就可以执行一个干净的解决方案,重建解决方案并正确发现您的测试。

stotam

赞同来自:

测试不喜欢异步方法。例如:

    [TestMethod]
    public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();
}
这样做之后:
    [TestMethod]
    public void TestAuth()
    {
        TestMethod1();
    }
public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();
}
它看到了测试。

xeos

赞同来自:

这些都是很好的答案,但还有一个我知道的原因;我刚碰到它。在我的一个测试中,我有一条ReSharper消息,表明我有一个未使用的私有类。这是我将要在即将进行的测试中使用的课程。这实际上导致我的所有测试都消失了。

mest

赞同来自:

我在使用针对“任何CPU”平台配置的测试项目在Windows 7 SP1 x64上的Visual Studio 2013 Update 4中遇到了同样的问题。 问题是测试项目实际上被命名为“测试”,并且在第二次(重新)构建项目时会消失。 例如,我将项目重命名为“MyProject.Tests”后,测试不再消失。

xminus

赞同来自:

当我尝试在不同的PC上构建解决方案时,我多次遇到此问题。 我也在使用NUnit和Specflow。默认情况下,我的测试项目以X86为目标,但我必须将其更改为X64。 步骤是 1.测试菜单 - >测试设置 - 默认处理器架构 - > x64。 2.清洁构建 3.建立 4.如果仍然没有出现测试。 5.转到工具扩展和更新,然后安装NUnit和Specflow库 6.清洁构建 7.建立 然后通常测试将出现在测试编辑器中。

inemo

赞同来自:

问题是测试运行器被配置为不从远程驱动器运行测试。当我将项目复制到本地驱动器时它工作正常,但我需要它在共享驱动器上(不记得为什么)。 我读到它可以配置为从共享驱动器工作,但从来没有这样做,因为当我发现我已经在Debian上切换到MonoDevelop的解决方案时。

asaepe

赞同来自:

我重复遇到的一个问题是没有在Windows 8+上以管理员身份运行Visual Studio(显式)。我尝试了列出的几个建议,但在我以管理员身份运行VS 2013之前,他们没有让单元测试出现(即使我的快捷方式设置为以这种方式打开VS,要么打开解决方案文件,要么有时单击它没有的快捷方式实际上是以管理员身份打开的。

tquod

赞同来自:

由于该项目是在原始海报上表明的共享驱动器上。 VS.NET在加载和运行测试程序集之前需要信任网络位置。 Have a read of this blog post。 要允许VS.NET加载网络共享内容,需要将它们(共享)添加到受信任位置。要将位置添加到完整信任列表运行(显然根据您的环境进行修改):

 caspol -m -ag 1.2 -url file:///H:/* FullTrust
要验证或列出运行的现有受信任位置:
 caspol -lg

adicta

赞同来自:

Visual Studio Professional 2012,此处更新4。在与测试类相同的项目中使用Interop函数定义(DllImport / extern)会使测试资源管理器混乱。将Interop移动到一个单独的项目中,解决了这个问题。

noptio

赞同来自:

您可以做的最简单的事情就是将这些文件从文件资源管理器拖放到Test项目中。再次建造项目,你很高兴! 要么 在文本编辑器中打开Test项目的.csproj文件,并手动包含要编译的文件名。在文件中搜索Compile标记,然后添加要运行的文件。

<ItemGroup>
    <Compile Include="TestSettings.cs" />
    <Compile Include="TestLibrary.cs" />
    <Compile Include="UnitTest1.cs" />
</ItemGroup>
为您的文件添加Compile标记并保存。现在运行测试。将检测并运行带有单元测试的文件。

asaepe

赞同来自:

我已将VS 2012更新到最新更新。即视觉工作室更新3。 这解决了我的问题。

zomnis

赞同来自:

请将关键字public添加到您的班级定义中。您的测试类目前在其自己的程序集之外不可见。

namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

eos_et

赞同来自:

在我的情况下,它是另一回事。我安装了一个软件包,然后将其卸载并重新安装了早期版本。这留下了我的app.config中的剩余configuration/runtime/asssemblyBinding/dependencyIdentity重定向。我不得不纠正它。 我通过查看Output窗口并在下拉列表中选择“Tests”来计算出来。错误消息在那里。 这是一种痛苦......我希望它可以帮助别人。

mest

赞同来自:

我收到错误:"Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe." 尝试以管理员身份运行Visual Studio。这对我有用。 There is another Stack Overflow post discussing this error,相同的解决方案适用于他们。问题仍然是为什么这样做。

verror

赞同来自:

我有同样的问题..在我的情况下,它是由私有财产TestContext引起的。 将其更改为以下内容有助于:

public TestContext TestContext
{
    get;
    set;
}
清理并构建解决方案后(如@Ourjamie的回答中所述),受测试的测试类中的测试方法可在测试资源管理器中找到。