MSTest:未运行任何测试,因为未加载任何测试或禁用所选测试

ger*_*wry 63 c# unit-testing mstest vs-unit-testing-framework

我有一个具有以下结构的ac#解决方案:

mySolution
  myProject
  myProject.MSTests
    References
      Microsoft.VisualStudio.QualityTools.UnitTestFramework
    sutMSTests.cs
Run Code Online (Sandbox Code Playgroud)

sutMSTests.cs:

[TestClass()] 
public class sutMSTests
{
    [TestMethod]
    public void MyTest0()
    {
        Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2);
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过Test,Run,All Tests In Solution运行测试时,我在VS2008状态行上得到以下信息:

未运行任何测试,因为未加载任何测试或禁用所选测试.

测试,Windows,测试视图显示没有测试.

注意:我手动创建了测试(适用于xUnit.net),而不是使用Microsoft的向导.

我将手工创建的MSTest设置与我使用向导生成的另一个测试设置进行了比较,它们看起来非常相似.

问题:上述错误消息的最可能原因是什么?

编辑2010-02-25: 更多信息:
我右键单击Solution Items文件夹,然后选择Add,New Project,键入Test Projects,Test Documents :: Visual Studio Test Project模板.

新项目的默认设置不会检测并传递测试"TestMethod1".
但是,我的测试没有显示...所以我将我的测试方法复制并粘贴到默认的测试测试项目"TestProject1"中.

我的测试是在"TestProject"中检测到的,但不是在原始位置.

我仔细比较了"TestProject1"的文件,组织和设置与我手工创建的测试项目.

此时,我猜测某些设置是由Visual Studio Test Project模板制作的,不易检测到.

imo,手动创建测试项目就像使用Visual Studio Test Project模板创建测试项目一样容易.

请注意:我并不是说我反对使用Visual Studio Test Project模板; 对我来说,我喜欢理解窗帘背后是什么,因为这让我成为了一个更好的程序员.

Dan*_*n F 76

对于googlers而言另一个 - 这个问题原来是我的问题,而且令我尴尬地愚弄了我.确保您的测试项目设置为构建在您正在使用的任何解决方案配置中.如果没有构建测试组件,VS将无法在不存在的组件中找到任何测试,并且您将头撞到墙上一段时间:-)

  • 你是对的.您需要确保正在构建组件.在我的例子中,这个错误是由于以下各项的组合:(a)在"配置管理器"中,没有勾选"构建"按钮(b)所有其他组件都设置为x32,这个被设置为"配置管理器"中的"任何CPU"(c)它抱怨它需要签署一个程序集,所以我需要在项目属性中设置它. (3认同)
  • 新创建的测试项目的剪切粘贴显然将其从构建和此问题中删除:( (2认同)

Dan*_*n F 45

可能有点晚了,但这个问题很好,我想我会为未来的googlers抛出一些碎屑.

Bryan Cook建议在他的博客文章中检查ProjectTypeGuids,关于手动创建MS测试项目.显然,您需要的神奇GUID {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}适用于c#和{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}VB.有关详细信息,请参阅他的博文.

如果博客文章消失,您需要在csproj文件的主属性组中添加以下元素:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)


小智 10

Google员工的另一个想法就是那里.我的问题是试图让被忽略的测试再次运行.如果删除忽略标签,则会出现相同的MS错误消息.不会自动重新启用测试.本文将指导您完成最后一步. http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html

  • buff ...谢谢你,我正要把电脑扔进窗户.希望它将在Visual Studio 2083中得到修复 (2认同)

Gus*_*ori 9

如果Visual Studio工作正常,修复很简单,即使它不需要.

总结其他人的贡献,特别是在本文中,这里最终对我有用:

  • 使用配置管理器确保选择您的测试项目以构建您正在使用的任何配置和平台(例如:configuration = Debug和platform = x86)
  • 确保您的方法属于a [TestClass]并且它已被标记[TestMethod],并且不使用该属性[Ignore]
  • 使用"测试视图"查找测试. 测试视图
  • 打开"属性"窗口(F4),确保已启用测试 启用


sma*_*ell 0

您的解决方案中有 VSMDI 文件吗?我相信这个文件是必需的(未验证)。