【问题标题】:Visual Studio 2010 Not Recognizing Unit TestVisual Studio 2010 无法识别单元测试
【发布时间】:2012-08-29 15:37:26
【问题描述】:

在现有解决方案中,我添加了一个新的测试项目。在我的测试项目 .cs 文件中,我有一个用 [TestClass] 属性装饰的类和一个用 [TestMethod] 属性装饰的方法。我已经验证了在配置管理器中为测试项目选中了构建复选框(正如我的谷歌搜索显示的那样,其他人遇到了这个问题)。我已将测试项目设置为解决方案的启动项目。当我尝试开始测试时,我得到“无法启动测试项目,因为该项目不包含任何测试”。我对单元测试真的很陌生。我错过了什么?

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
       Whole bunch of stuff
       Assert.Inconclusive("Done");
    }
 }

更新:所以我打开了一个新的 VS 实例,转到 File => New => Project => Test Project。没有触摸或编辑任何东西。直接进入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);
    }
 }
}

当我尝试启动它时,关于项目不包含任何测试的相同错误。还在构建输出“无法加载文件或程序集 '~\my documents\visual studio 2010\Projects\TestProject2\bin\Debug\TestProject2.dll' 或其依赖项之一。不支持操作。(来自异常HRESULT: 0x80131515)"

我不知道单元测试会比这简单得多。什么鬼???

【问题讨论】:

  • 您仍然可以通过选择并运行它来运行单元测试吗?例如。如果您右键单击实际的测试方法(在您的 .cs 文件中),然后选择“运行测试”,那么它可以工作吗?
  • 你能发布你的测试课吗?我以前遇到过这个问题,我相信这是一个语法问题。
  • @CiaranG 当我这样做时,我没有收到任何错误。但是测试实际上并没有做它应该做的,所以我试图在其中放置一个断点来找出原因。当我尝试调试时,一切都建立了,但是断点上方有一个感叹号,表示它永远不会被命中,因为“没有为此文档加载任何符号”
  • 我不建议更改测试框架。我使用过 Visual Studio 测试框架和 NUnit。它们之间没有太大区别。有些事情必须做一些不同的事情,但我不会改变你不熟悉的事情。你说你是单元测试的新手,所以我认为你最好坚持使用 Visual Studio 测试框架,因为它与 Visual Studio 的集成更加紧密。 Seldary,当他试图掌握 Visual Studio 测试框架时,我认为建议更改为另一个框架并不具有建设性。
  • 您是尝试在“调试”模式还是“发布”模式下运行测试?

标签: visual-studio-2010 unit-testing


【解决方案1】:

我遇到了同样的问题,当一个工作测试项目中的测试突然不再被识别时。

将项目文件与另一个工作测试项目中的文件进行比较,发现主 节点中缺少 节点。

节点内添加这一行解决了我的问题:

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>

【讨论】:

    【解决方案2】:

    我可以通过修改此处找到的 devenv.exe 配置文件来实现此功能:

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

    将以下行添加到&lt;runtime&gt; 部分,然后重新启动 Visual Studio:

    <loadFromRemoteSources enabled = "true" />
    

    (这是帮助我的link

    【讨论】:

    • 我的开发环境位于 Windows Server 2008 R2 上的 VMware VM 中(因此它是 64 位)。我的代码位于网络驱动器上(嗯,它位于映射到驱动器号的共享文件夹中)。这个提示解决了我的问题!
    • 由于我的测试项目文件位于网络文件夹中,我遇到了同样的问题。这解决了我的问题。
    【解决方案3】:

    FrstCBC's anwser 对我不起作用。 我在装有 Windows 7 64 位和 Visual Studio 2012 的 VirtualBox 机器上。

    我必须将输出移动到本地文件夹:打开单元测试项目属性并在构建选项卡中,浏览输出路径 到本地文件夹。现在检测到测试并可以运行。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        对我来说,只是我的类和方法不是public(我意识到海报确实有public,但我通过谷歌搜索找到了这篇文章“testclass testmethod margin icons missing”)。我犯了一个愚蠢的错误,但也许它会帮助其他人。

        【讨论】:

          【解决方案6】:

          确认所有 .cs 文件在“属性”窗口中都标记为“编译”。如果它被标记为内容,那么你会遇到这个问题。

          【讨论】: