我有一些测试是使用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");
        }
    }
}

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


当前回答

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

其他回答

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

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

这只咬了我一口。我向项目添加了一个测试,但无法在测试资源管理器中显示它。我以前的检查结果都出来了最后,我意识到我只是在查看一个特定的播放列表,并且我还没有将新的测试添加到播放列表中。如果你使用播放列表,选择“所有测试”,看看VS是否找到你的测试并在测试资源管理器中显示它们。然后你也可以将它们添加到所需的播放列表中。

我发现的一个问题是,如果解决方案在网络驱动器/网络位置/共享驱动器上运行,则在测试资源管理器中找不到测试(什么也没有显示)

您可以通过添加一个环境变量来解决这个问题。

COMPLUS_LoadFromRemoteSources,将其值设置为1

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

public async void ListCaseReplace() { ... }

没有出现,但编译良好。当我删除async关键字时,测试显示在测试资源管理器中。这是因为async void是一个“fire-and-forget”方法。将该方法设置为async Task,您将获得测试结果!

此外,不将“测试”项目的配置设置为“生成”也将阻止显示测试。配置管理器>检查要构建的测试。

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

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

public TestContext TestContext
{
    get;
    set;
}

在清理和构建解决方案之后(如@Ourjamie的回答所述),受影响的测试类中的测试方法在测试资源管理器中是可用的。