Visual Studio 2010未能识别单元测试。

6
在现有的解决方案中,我添加了一个新的测试项目。在我的测试项目 .cs 文件中,我有一个使用 [TestClass] 属性装饰的类和一个使用 [TestMethod] 属性装饰的方法。我已验证在配置管理器中测试项目的构建复选框被选中(根据我的谷歌搜索发现这是其他遇到此问题的人的问题)。我已将测试项目设置为解决方案的启动项目。当我尝试启动测试时,我收到“无法启动测试项目,因为该项目不包含任何测试”的消息。我对单元测试非常陌生。我错过了什么?
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
       Whole bunch of stuff
       Assert.Inconclusive("Done");
    }
 }

更新:所以我打开了一个新的VS实例,转到文件=>新建=>项目=>测试项目。没有触摸或编辑任何内容。直接进入cs文件,以下是其全部内容:

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TestProject2
{
 public class Inspection
 {
    public bool SubmitInsp()
    {
        return true;
    }
 }

 [TestClass]
 public class UnitTest1
 {
    [TestMethod]
    public void TestMethod1()
    {
        Inspection insp = new Inspection();
        bool result = insp.SubmitInsp();

        Assert.IsTrue(result);
    }
 }
}

当我尝试启动它时,出现了关于项目不包含任何测试的相同错误。此外,在构建输出中找到了这个问题:“无法加载文件或程序集'~\我的文档\visual studio 2010\Projects\TestProject2\bin\Debug\TestProject2.dll'或其某个依赖项。操作不受支持。(HRESULT 异常: 0x80131515)”
我不知道单元测试是否比这更简单了。到底是怎么回事?

你还能通过选择并运行单元测试来运行它吗?例如,如果你在.cs文件中右键点击实际的测试方法,并选择“运行测试”,那么它是否能正常工作? - Ciaran Gallagher
你能发一下你的测试类吗?我之前也遇到过这个问题,我认为那是一个语法问题。 - GodsCrimeScene
@CiaranG 当我这样做时,我没有收到任何错误。但是测试实际上并没有执行它应该执行的操作,因此我尝试在其中设置断点以弄清原因。当我尝试调试时,一切都构建成功,但是在断点上有一个感叹号,指出它永远不会被触发,因为“此文档尚未加载任何符号”。 - jmease
我不建议更改测试框架。我曾经使用过Visual Studio测试框架和NUnit。它们之间没有太大的区别。有些事情必须以稍微不同的方式完成,但是我不会更换你不熟悉的东西。你说你刚开始接触单元测试,所以我认为最好你继续使用Visual Studio测试框架,因为它与Visual Studio更紧密地集成在一起。同时,当这个人试图掌握Visual Studio测试框架时,我认为建议更换到另一个框架并不具有建设性。 - Ciaran Gallagher
你是想在“调试”模式还是“发布”模式下运行测试? - Ciaran Gallagher
可能是SP1引起的问题吗?在安装SP1之前,我能够创建几个小测试项目。但现在我创建的所有测试项目都无法启动。 - jmease
6个回答

5

我曾经遇到过同样的问题,当一个正在运行的测试项目突然不再被识别时。

将该项目文件与另一个正在工作的测试项目的文件进行比较后,我发现主要的<PropertyGroup>节点中缺少了<ProjectTypeGuids>节点。

在<PropertyGroup>节点内添加以下内容即可解决该问题:

C#:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

VB:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>

5
我通过修改此处找到的devenv.exe配置文件使其正常工作:

C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.config

<runtime>部分添加以下行,然后重新启动Visual Studio:

<loadFromRemoteSources enabled = "true" />

(这是帮助我解决问题的链接


我将我的开发环境放在了一个 VMware 虚拟机上,它运行在 Windows Server 2008 R2 上(因此是 64 位的)。我的代码存储在网络驱动器上(实际上是映射到一个驱动器字母的共享文件夹中)。这个提示解决了我的问题! - Colin
我也遇到了同样的问题,因为我的测试项目文件位于网络文件夹中。这解决了我的问题。 - Otiel

2

FrstCBC的回答对我并没有用。

我在一个安装了Windows 7 64位和Visual Studio 2012的VirtualBox虚拟机上。我不得不将输出文件移动到本地文件夹:打开单元测试项目属性,在生成选项卡中,浏览输出路径以指定本地文件夹。现在可以检测到测试并运行。


1

将测试项目保存到网络文件夹或计算机本地任何位置都会出现此问题。创建了另一个测试项目并将其保存到闪存驱动器上,一切正常。我不知道是因为我的机器是64位还是因为它是虚拟机,但我想我只需要在外部存储设备上测试所有东西。


1

对我来说,问题只是我的类和方法没有被标记为public(我意识到发帖者已经使用了public,但我是通过谷歌搜索“testclass testmethod margin icons missing”找到这篇文章的)。这是我的愚蠢错误,但也许能帮助其他人。


0

请在属性窗口中验证所有的.cs文件是否标记为编译。如果标记为内容,则会遇到此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接