我有一些测试是使用Microsoft.VisualStudio.TestTools内置的。单元测试,但不能让它们运行。

我使用visual studio 2012终极版。

我有两个项目的解决方案;一个有测试,使用Microsoft.VisualStudio.TestTools。UnitTesting, [TestClass]在类之前,[TestMethod]在测试方法之前,并参考Microsoft.VisualStudio.QualityTools.UnitTestFramework(版本10.0.0.0,运行时版本v2.0.50727)。我已经尝试过。net框架3.5,4和4.5其他人给出了一个重定向错误。

我已经尝试构建解决方案和项目。测试资源管理器显示“构建解决方案以发现所有可用的测试”。单击“全部运行”可在解决方案中构建、发现和运行所有测试。

问题是:如何让visual studio找到测试?


我也试过遵循这个:http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx但没有成功:当我被要求右键单击并选择创建测试时,我被困在了开始的部分。没有创建测试。


我有这个测试(它编译,但不显示在测试资源管理器):

using Microsoft.VisualStudio.TestTools.UnitTesting;

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

我现在发现(见下面删除的答案),这是因为它在一个共享驱动器上,但我还不知道如何绕过它。(可能是关于安全设置的问题)。


当前回答

另一个可能阻止发现测试的问题,通常在“测试”输出窗口中会出现如下消息:

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手动运行测试。

其他回答

我在尝试在网络共享上打开解决方案时遇到了同样的问题。在这种情况下,测试资源管理器不会检测到任何单元测试。解决方案是:

控制面板-> Internet选项->“安全”选项卡->单击“内网”,将持有网络共享的服务器IP地址或主机名添加到“站点”列表中。

在此之后,我重新编译了解决方案,现在出现了测试。 这应该与@BigT给出的答案非常相似。

这有时是可行的。

检查Test菜单下的处理器架构是否匹配 您用来构建解决方案的那个。

测试->测试设置->默认处理器架构-> x86 / x64

正如在其他文章中提到的,确保您打开了Test Explorer窗口。 Test -> Windows ->测试资源管理器

然后重新构建带有测试的项目,应该会使测试出现在测试资源管理器中。

编辑:正如Ourjamie在下面指出的,做一个干净的构建也会有所帮助。 除此之外,我还遇到了一件事:

“构建”复选框在配置管理器中被取消勾选 用于我在解决方案下创建的新测试项目。

进入构建->配置管理器。 确保您的测试项目选中了构建复选框 用于所有解决方案配置和解决方案平台。

I found the best way to troubleshoot this issue is to create a .proj msbuild file and add your unit test projects which you hare having an issue into this file and execute the tests using the command line version of mstest. I found a small configuration issue in my app.config which only appeared when running the tests from mstest - otherwise the test project built just fine. Also you will find any indirect reference issues with this method as well. Once you can run the Unit test from the command line using mstest you can then do a clean solution, rebuild solution and your test should be discovered properly.

我有同样的症状,但情况不同。

我不得不在Peter Lamberg的解决方案中添加一个额外的步骤——清理你的解决方案/项目。

我的unittest项目的目标是x64。当我创建这个项目时,它最初是针对x86的。

切换到x64后,我所有的单元测试都消失了。

我必须去测试菜单->测试设置-默认处理器架构-> x64。

他们还是没有出现。

做了一个构建。

还是没出现。

终于做了一次清洁

然后他们出现了。

我发现清洁解决方案和清洁是相当有用的,让解决方案发挥球时,设置已经改变。有时我不得不走到极端,删除obj和bin目录,并进行重建。

我在将我的解决方案从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

我重新构建了所有的测试,这解决了这个问题——所有的测试都在测试资源管理器中找到了,现在所有的测试都找到了,并且运行得很好。