我有一些测试是使用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在下面指出的,做一个干净的构建也会有所帮助。 除此之外,我还遇到了一件事:

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

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

其他回答

这更多的是为了帮助那些最终来到这里的人,而不是回答OP的问题:

尝试关闭和重新打开视觉工作室,为我做的把戏。

希望这能帮助到一些人。

问题是测试运行程序配置为不从远程驱动器运行测试。当我将项目复制到本地驱动器时,它工作得很好,但我需要在共享驱动器上(不记得为什么)。

我读到过它可以配置为在共享驱动器上工作,但一直没有这样做,因为当我发现这个解决方案时,我已经在Debian上切换到MonoDevelop了。

检查所引用的程序集是否有可能将“本地复制”设置为“False”的程序集。

如果测试项目构建到自己的文件夹(例如bin/Debug),并且项目依赖于另一个程序集,并且参考列表中的其中一个程序集被标记为“本地复制= "False",则由于缺少依赖项,程序集无法加载,并且构建后将无法加载测试。

我也有同样的问题。在我的例子中,它是由私有属性TestContext引起的。

将其更改为以下方式会有所帮助:

public TestContext TestContext
{
    get;
    set;
}

在清理和构建解决方案之后(如@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.