我有一些使用内置Microsoft.VisualStudio.TestTools.UnitTesting
的测试,但无法让它们运行。
我正在使用visual studio 2012 ultimate。
我有两个项目的解决方案;其中一个在类之前有using Microsoft.VisualStudio.TestTools.UnitTesting
,[TestClass]
,在测试方法之前有[TestMethod]
,参考Microsoft.VisualStudio.QualityTools.UnitTestFramework
(版本10.0.0.0,运行时版本v2.0.50727)。我试过dot-net framework 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");
}
}
}
我现在已经发现(见下面删除的答案),因为它位于共享驱动器上,但我还不知道如何绕过它。 (关于安全设置的事情可能)。
答案 0 :(得分:227)
我有相同的症状,但在不同的情况下。
我必须在Peter Lamberg的解决方案中添加一个额外的步骤 - 清理您的解决方案/项目。
我的unittest项目以x64为目标。当我创建项目时,它最初的目标是x86。
切换到x64后,我的所有单元测试都消失了。
我必须去测试菜单 - >测试设置 - 默认处理器架构 - > 64。
他们仍然没有出现。
做了一个构建。
仍然没有出现。
最后做了一个干净的
然后他们出现了。我发现清洁解决方案和清洁在设置更改时获得解决方案非常有用。有时我必须走极端并删除obj
和bin
目录并进行重建。
答案 1 :(得分:159)
请将关键字公开添加到您的班级定义中。您的测试类目前在其自己的程序集之外不可见。
namespace tests {
[TestClass]
public class SimpleTest {
[TestMethod]
public void Test() {
Assert.AreEqual("a","a", "same");
}
}
}
答案 2 :(得分:58)
这有时会奏效。
检查“测试”菜单下的处理器架构是否匹配 你用来构建解决方案的那个。
测试 - >测试设置 - >默认处理器架构 - > x86 / x64
正如其他帖子中所述,请确保您打开了“测试资源管理器”窗口。 测试 - > Windows - >测试资源管理器
然后使用测试重建项目应该使测试显示在测试资源管理器中。
编辑:正如Ourjamie在下面指出的那样,做一个干净的构建也可能有所帮助。 除此之外,我还遇到了另外一件事:
Configuration Manager中未选中“Build”复选框 对于我在解决方案下创建的新测试项目。
转到Build - >配置管理器。 确保您的测试项目已选中构建复选框 适用于所有解决方案配置和解决方案平台。
答案 3 :(得分:32)
答案 4 :(得分:18)
在我最近的经历中,以上所有都不起作用。我的测试方法
public async void ListCaseReplace() { ... }
没有出现,但编译得很好。当我删除async
关键字时,测试资源管理器中显示的测试结果。这是因为async void
是一种“即发即忘”的方法。制作方法async Task
,您将得到测试!
此外,没有将Test项目的配置设置为“Build”也会阻止测试显示。配置管理器>检查您的测试以构建。
答案 5 :(得分:12)
由于该项目位于共享驱动器上,原始海报已表明。 VS.NET在加载和运行测试程序集之前需要信任网络位置。 Have a read of this blog post
要允许VS.NET加载网络共享内容,需要将它们(共享)添加到受信任位置。要将位置添加到完整信任列表运行(显然根据您的环境需要进行修改):
caspol -m -ag 1.2 -url file:///H:/* FullTrust
验证或列出现有的受信任位置:
caspol -lg
答案 6 :(得分:10)
我发现的一个问题是,如果解决方案在网络驱动器/网络位置/共享驱动器上运行,则在测试资源管理器中找不到测试(没有显示)
您可以通过添加环境变量来解决此问题。
COMPLUS_LoadFromRemoteSources并将其值设置为1
答案 7 :(得分:6)
我在尝试在网络共享上打开解决方案时遇到了同样的问题。在这种情况下,测试资源管理器不会检测到任何单元测试。解决方案原来是:
控制面板 - >互联网选项 - > “安全”标签 - >单击“Intranet”,将包含网络共享的服务器IP地址或主机名添加到“站点”列表中。
完成此操作后,我重新编译了解决方案,现在测试出现了。 这应该与@BigT的答案非常相似。
答案 8 :(得分:6)
快速检查清单,用于解决一些常见的测试问题。确保:
public
[TestClass]
属性[TestMethod]
属性如果这样做无效,请尝试清理,重建解决方案并重新启动Visual Studio。
答案 9 :(得分:6)
我遇到了同样的问题..在我的情况下,它是由私有财产 TestContext
引起的。
将其更改为以下内容有助于:
public TestContext TestContext
{
get;
set;
}
清理并构建解决方案后(如@Ourjamie的回答中所述),测试资源管理器中提供了受影响的测试类中的测试方法。
答案 10 :(得分:6)
我收到错误:"Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."
尝试以管理员身份运行Visual Studio。这对我有用。
There is another Stack Overflow post discussing this error,同样的解决方案适用于他们。问题仍然存在的原因。
答案 11 :(得分:4)
我有时会出现同样的症状。
我做的是:
1.关闭Test Explorer窗口
2.清理解决方案
3.重建解决方案
4.从Test中重新启动Test Explorer窗口 - > Windows - >测试浏览器。
我在Test Explorer窗口中进行了测试。
答案 12 :(得分:2)
这更多是为了帮助那些最终到达这里的人而不是回答OP的问题:
尝试关闭并重新打开visual studio,为我做了诀窍。
希望这有助于某人。
答案 13 :(得分:2)
我知道这是一个较旧的问题,但在Visual Studio 2015中,我遇到了新创建的测试类无法识别的问题。尝试了一切。最终成为问题的是该课程没有包括在项目中#34;。我只是在重新启动Visual Studio时发现了这一点,并注意到我的测试类不在那里。在显示隐藏文件时,我看到它以及我编写的其他类都没有包括在内。希望有所帮助
答案 14 :(得分:2)
当我尝试在不同的PC上构建解决方案时,我多次遇到此问题。
我也在使用NUnit和Specflow。默认情况下,我的测试项目以X86为目标,但我必须将其更改为X64。 步骤是 1.测试菜单 - >测试设置 - 默认处理器架构 - > 64。 2.清洁构建 3.建立 4.如果仍然没有出现测试。 5.转到工具扩展和更新,然后安装NUnit和Specflow库 6.清洁构建 7.构建
然后通常测试将出现在测试编辑器中。
答案 15 :(得分:2)
我发现解决此问题的最佳方法是创建.proj msbuild文件,并将您遇到问题的单元测试项目添加到此文件中,并使用命令行版本的mstest执行测试。我在app.config中发现了一个小配置问题,只有在从mstest运行测试时才会出现 - 否则测试项目构建得很好。此外,您还会发现此方法的任何间接引用问题。一旦你可以使用mstest从命令行运行Unit测试,你就可以做一个干净的解决方案,重建解决方案,你的测试应该被正确发现。
答案 16 :(得分:2)
从顶部的菜单栏...
测试 - >运行 - >所有测试
您还可以从测试资源管理器中查看所有测试(测试 - > Windows - >测试资源管理器)
进一步使用VS 2012,如果您遗漏了任何内容,请尝试使用右上角的快速启动栏进行搜索(Ctrl + Q)“测试”
希望这有帮助。
答案 17 :(得分:2)
在我的情况下,这是另一回事。我安装了一个软件包然后将其卸载并重新安装了早期版本。这留下了我的app.config中的剩余configuration/runtime/asssemblyBinding/dependencyIdentity
重定向。我不得不纠正它。
我通过查看Output
窗口并在下拉列表中选择“Tests
”来计算出来。错误消息在那里。
这是一种痛苦......我希望它可以帮助别人。
答案 18 :(得分:1)
检查项目属性中的不设置为仅延迟签名 - >签名。如果是,请取消选择它并进行干净的重建。
答案 19 :(得分:1)
测试不喜欢异步方法。例如:
[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();
}
它看到了测试。
答案 20 :(得分:1)
这里的解决方案都没有帮助我。对于一个解决方案,不会发现测试,而引用相同项目的另一个解决方案工作正常。 我最后通过删除solutionname.v12.suo文件解决了这个问题。
答案 21 :(得分:1)
添加我的答案,因为这是Google的最佳结果。
我正在使用Visual Studio 2015并且(在不知不觉中 - 我刚刚运行Install-Package NUnit
)将NUnit3包NuGet安装到我的测试项目中。我已经安装了NUnit Test Adapter扩展,但我的测试仍未显示。
通过工具安装NUnit3测试适配器>扩展和更新为我解决了这个问题。
答案 22 :(得分:1)
检查引用的程序集是否包含可能具有"复制本地"设置为" False"。
如果您的测试项目构建到它自己的文件夹(例如bin / Debug),并且项目依赖于另一个程序集,并且References列表中的其中一个程序集被标记为Copy Local =" False&# 34;,由于缺少依赖关系,程序集无法加载,并且在构建后不会加载测试。
答案 23 :(得分:1)
看起来NUnit Framework 2.6.4与NUnit Test Adapter不兼容。在网站上,它提到测试适配器只能与NUnit Framework 2.6.3一起使用。
这是我的问题: 1.我在VS2012中通过Nuget分别下载了NUnit和NUnit Test Adapter。不知怎的,NUnit更新到2.6.4突然间,我没有看到我的测试用例列出。
修正:
卸载Nuget和Nuget测试适配器
一个。转到工具> Nuget> Nuget Pkg经理>管理Nuget Pkg for Solution
湾列出已安装的软件包
℃。点击管理
d。取消检查您的项目
安装NUnit测试适配器,包括NUnit 2.6.3 Framework
清洁/重建解决方案
Open Test>测试资源管理器>全部运行
我看到了所有的测试用例
希望这有帮助
答案 24 :(得分:1)
这些都是很好的答案,但还有一个我知道的原因;我刚碰到它。在我的一个测试中,我有一条ReSharper消息,表明我有一个未使用的私有类。这是我即将在即将到来的测试中使用的课程。这实际上导致我的测试全部消失。
答案 25 :(得分:1)
我尝试在VS2013 Ultimate中的网络共享上打开解决方案时遇到了同样的问题。
我通过打开
来纠正了这个问题控制面板 - >互联网选项 - > "安全"标签 - >单击"本地Intranet",单击站点并确保"自动检测Intranet网络"被勾选了。
答案 26 :(得分:1)
将我的解决方案从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年。查看测试项目参考我发现它的目标是此版本的Visual Studio错误的Microsoft Visual Studio单元测试框架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
我重建了所有问题并解决了这个问题 - 所有测试都在测试资源管理器中找到,现在所有测试都找到并且运行完美。
答案 27 :(得分:1)
对我来说,解决方案只是稍微复杂一点。
我刚刚将一个现有的解决方案带到我的机器上(从gitHub克隆),我们不跟踪Visual Studio创建的自动生成的.cs文件。 (对于每个要素文件,都有一个名称相同的.cs文件)
在没有关联的.cs文件的情况下打开解决方案实际上允许我导航到绑定的方法,因此看起来好像specflow已正确连接,但我无法在测试资源管理器中查看测试名称。
对于这个问题,只需从项目中排除特征文件然后重新包含它们,强制VS重新生成这些自动生成的代码隐藏文件。
之后,我能够在测试资源管理器中查看测试。
答案 28 :(得分:1)
我已将VS 2012更新为最新更新。即视觉工作室更新3。 这解决了我的问题。
答案 29 :(得分:1)
我有同样的问题,但有点不同。
我使用的是visual studio 2012.由于某种原因,只有初始生成文件的测试正在运行。但是另一个文件中的测试没有运行。试过这里发布的不同解决方案,没有用。
最后我发现我在测试类中有一个私有方法,这是该类中的第一个方法。我刚刚在测试方法之后移动了私有方法;现在,具有[TestMethod]
属性的方法是类中的第一个方法。奇怪,但现在它的工作原理。
希望有一天能帮到某人。
答案 30 :(得分:0)
谷歌搜索“视觉工作室无法看到测试”后,它把我带到了这里,所以我想我会分享我的问题。我可以构建我的解决方案,测试已经存在,但我无法看到他们!它转变为我们这是IDE的一个怪癖,导致了这个问题。请参阅下面的图片以获得解释和解决方法:
答案 31 :(得分:0)
Visual Studio 2015(第14版.....) - 同样的问题
原因:NUnit和NUnit测试适配器的不同版本 在我的情况下,我有NUnit(3.5)和NUnit测试适配器的最新版本,但测试适配器不是正确的。对于NUnit 3及更高版本,必须使用NUnit3TestAdapter
解决方案: 卸载了"故障" NUnint测试适配器并安装了UNit3TestAdapter v.3.5.0(最新版本为3.6.0,但没有使用它以使其与NUnit保持一致)
重建解决方案之后测试加快了:)
答案 32 :(得分:0)
您可以做的最简单的事情就是将这些文件从文件资源管理器拖放到Test项目中。再次建立项目,你很高兴!
OR
在文本编辑器中打开Test项目的.csproj
文件,并手动包含要编译的文件名。在文件中搜索Compile
标记,然后添加要运行的文件。
<ItemGroup>
<Compile Include="TestSettings.cs" />
<Compile Include="TestLibrary.cs" />
<Compile Include="UnitTest1.cs" />
</ItemGroup>
为您的文件添加Compile标记并保存。现在运行测试。将检测并运行带有单元测试的文件。
答案 33 :(得分:0)
问题是测试运行器被配置为不从远程驱动器运行测试。当我将项目复制到本地驱动器时它工作正常,但我需要它在共享驱动器上(不记得为什么)。
我读到它可以配置为从共享驱动器工作,但从来没有这样做,因为当我发现我已经在Debian上切换到MonoDevelop的解决方案时。
答案 34 :(得分:0)
我阅读了所有现有的答案,发现我的(xUnit)测试没有被发现,因为我删除了“未使用的”引用,更具体地说是xunit.execution.desktop
。重新安装xUnit包修复了我的问题。
答案 35 :(得分:0)
这个只是咬我。我在我的项目中添加了一个测试,但无法让它显示在Test Explorer中。我的旧测试都出现了。最后,我意识到我只是查看特定的播放列表,而我没有将新测试添加到播放列表中。如果您正在使用播放列表,请选择“所有测试”并查看VS是否找到您的测试并在测试资源管理器中显示它们。然后,您也可以将它们添加到所需的播放列表中。
答案 36 :(得分:0)
在我的情况下,我有3个测试项目,使用Visual Studio 2017创建(但我认为它并不重要),并且测试资源管理器中只发现了其中两个。我意识到第三个项目有Microsoft.VisualStudio.QualityTools.UnitTestFramework
dll的不同版本。
我在NuGet Manager中更新了它,测试出现了。
答案 37 :(得分:0)
我们正在使用xunit和解决方案为我工作,团队正在删除文件夹%TEMP%\ VisualStudioTestExplorerExtensions
阅读此主题。
Why is the Visual Studio 2015/2017 Test Runner not discovering my xUnit v2 tests
答案 38 :(得分:0)
可能会阻止发现测试的另一个问题,通常是在测试输出窗口中显示消息,如:
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。具体而言&amp; 字符,目录或文件名中不允许使用&lt; 和&gt; 。这会导致测试发现失败并且无法识别测试,但我仍然可以通过单击边距来使用Resharper手动运行测试。
答案 39 :(得分:0)
这个问题似乎有很多不同的解决方案可能会添加我自己的:
关闭Visual Studio
重命名C:\ Users \ username \ AppData \ Local \ Microsoft \ VisualStudio \ 12.0 \ ComponentModelCache 到ComponentModelCache.old
运行Visual Studio,将重建组件缓存。
答案 40 :(得分:0)
由于这些答案都没有解决我遇到的原因,对于这个问题,我也会在这里添加我的答案。
就我而言,这是一个复制粘贴代码问题。我们有一个TestProjectA
,其中有一些特定类型的测试,我们希望将它们提取到自己的测试项目 - TestProjectB
。现在的问题是,虽然TestProjectA
中的测试继续显示正常,但新的TestProjectB
中的测试未显示在VS Test Explorer中 - 除非您专门构建TestProjectB
或者手动右键单击那里的测试并运行它。
原因是在复制粘贴代码时,某些命名空间没有得到更新:
TestMethodA()
位于命名空间TestClassA
TestProjectA.ModuleA
\TestProjectA\TestClassA.cs
,文件路径为TestMethodA()
TestClassB
的{{1}}中的TestProjectA.ModuleA
以及文件路径\TestProjectB\TestClassB.cs
因此,Visual Studio在“输出”窗口中打印出一条消息,表明这两者的TestId是相同的,并且由于两者之间的TestId冲突而在测试资源管理器中继续显示TestProjectA
而不是TestProjectB
项目。将名称空间更正为TestProjectB.ModuleB
\TestProjectB\TestClassB.cs
修正了问题。
答案 41 :(得分:0)
我重复遇到的一个问题是没有在Windows 8+上以管理员身份运行Visual Studio(显式)。我尝试了列出的几个建议,但在我以管理员身份运行VS 2013之前,他们没有让单元测试出现(即使我的快捷方式设置为以这种方式打开VS,要么打开解决方案文件,要么有时单击它没有的快捷方式#39; t实际上以管理员身份打开。)
答案 42 :(得分:0)
我在Windows 7 SP1 x64上使用针对&#34;任何CPU&#34;的测试项目在Visual Studio 2013 Update 4中遇到了同样的问题。平台配置。
问题在于测试项目实际命名为&#34;测试&#34;并且在第二次重建项目时会消失。
将项目重命名为&#34; MyProject.Tests&#34;例如,测试不再消失。
答案 43 :(得分:0)
这是根据用户错误/愚蠢添加到列表中的另一个....我尝试了这个问题的各种答案,然后在Configuration Manager(构建菜单,Configuration Manager)中实现了我的测试项目未被检查)所以它没有被构建&gt;。&lt;
发布此信息,希望能像我刚才那样浪费一两个小时的人!
答案 44 :(得分:0)
我在VS2013 Ultimate中遇到了同样的问题。我的问题是我正在创建Windows服务而忘记卸载它。所以服务正在运行,VS无法访问其中一个导致整个测试套件根本没有加载的DLL。
答案 45 :(得分:0)
Visual Studio Professional 2012,此处更新4。在与测试类相同的项目中使用Interop函数定义(DllImport / extern)会使测试资源管理器混乱。将Interop移动到一个单独的项目中,解决了这个问题。
答案 46 :(得分:0)
我复制粘贴了方法声明,其中包含一个输入字符串参数。忘了删除输入参数。
public void ExtractValueFromLineTest(string input) {}//test not discovered because of the string input param
答案 47 :(得分:0)
我尝试了以上所有内容,但我的Visual Studio 2012仍未显示测试结果。最后我去了一个测试类,发现它有一个RootNamespace.FolderName,我删除了.FolderName把这个类放在root命名空间中,并且bingo所有的测试都回来了!
直到前几天才能理解为什么它与原始命名空间一起工作正常。
答案 48 :(得分:-1)
您可以右键单击测试方法,然后选择“运行测试/运行单元测试”选项。这应该会打开测试窗口。