我有一些测试是使用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");
}
}
}
我现在发现(见下面删除的答案),这是因为它在一个共享驱动器上,但我还不知道如何绕过它。(可能是关于安全设置的问题)。
这有时是可行的。
检查Test菜单下的处理器架构是否匹配
您用来构建解决方案的那个。
测试->测试设置->默认处理器架构-> x86 / x64
正如在其他文章中提到的,确保您打开了Test Explorer窗口。
Test -> Windows ->测试资源管理器
然后重新构建带有测试的项目,应该会使测试出现在测试资源管理器中。
编辑:正如Ourjamie在下面指出的,做一个干净的构建也会有所帮助。
除此之外,我还遇到了一件事:
“构建”复选框在配置管理器中被取消勾选
用于我在解决方案下创建的新测试项目。
进入构建->配置管理器。
确保您的测试项目选中了构建复选框
用于所有解决方案配置和解决方案平台。
我在将我的解决方案从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
我重新构建了所有的测试,这解决了这个问题——所有的测试都在测试资源管理器中找到了,现在所有的测试都找到了,并且运行得很好。
由于这些答案都没有涉及到我遇到的原因,对于这个问题,我也将在这里添加我的答案。
在我的例子中,这是一个复制粘贴代码的问题。我们有一个TestProjectA,其中有特定类型的测试,我们希望将它们拉出到它自己的测试项目testprojecb中。现在的问题是,当TestProjectA中的测试继续正常显示时,新的TestProjectB中的测试不会在VS测试资源管理器中显示——除非你特别构建了TestProjectB或手动右键单击那里的测试并运行它。
原因是在复制粘贴代码时,一些名称空间没有得到更新:
在命名空间TestProjectA中的TestClassA中有一个TestMethodA()。ModuleA的文件路径\TestProjectA\TestClassA.cs
以及命名空间TestProjectA中的TestClassB中的TestMethodA()。ModuleA的文件路径\ testprojecb \TestClassB.cs
因此,visual Studio在输出窗口中输出一条消息,表明这两个项目的testd是相同的,并且由于两个项目之间的testd冲突,在测试资源管理器中继续显示TestProjectA而不是testprojecb。将命名空间更正为TestProjectB。ModuleB for \ testprojecb \TestClassB.cs修复了这个问题。