当按项目分组时,测试会显示在“外部”类别下的测试资源管理器中。

18
每当我尝试从Visual Studio 2012的测试资源管理器运行测试时,一些测试会被归类为“External”,即使按照“按项目分组”的方式进行分组。此时源代码也未被识别。 enter image description here

你在External中有哪些类型的测试?你使用什么测试框架? - Spock
这只是一个单元测试,使用MS Test运行。问题非常随机,有时候我需要重新启动Visual Studio并再次运行测试,然后一切都恢复到原来的状态。 - Jorge Alvarado
这里的被接受的答案也可以很好地解决问题。 - Ian Robertson
3个回答

15

这是因为编译时未包含pdb文件。如果你在除调试以外的解决方案配置中编译代码,必须确保包含pdb。

要实现这一点,您必须打开高级构建设置:

  • 右键单击项目并选择属性
  • 点击构建选项卡
  • 检查“配置”下拉菜单中是否选择了您的配置
  • 点击高级按钮。

在新窗口中,您必须在调试信息下拉菜单中选择“pdb-only”。


您可以指定除了“无”以外的任何选项。我必须说,这是我最不怀疑的事情了。 - Tanveer Badar
这让我意识到了我的问题 - 我的项目设置为没有调试信息,但那是因为当我把它添加到解决方案中时,配置出现了某些原因的“发布”而不是像其他解决方案一样的“调试”。这是其他人需要检查的内容,他们可能会想知道为什么没有启用调试符号。 - mdryden
1
在我的环境中 - VS 2017 版本 15.6.6 - 如果选择任何调试信息生成选项,这也会发生。而且这与类的全名和测试方法的组合长度也无关,因为在我的情况下,它明显比 254 个字符短。肯定还有其他原因。 - Manfred
对我来说,它设置为“全屏”。 - Vin Shahrdar

3

这在我的情况下发生,但仅当命名空间、类名和测试方法的组合长度超过254个字符时。(MS-Test,Visual Studio 2013 12.0.40629.00 Update 5)

namespace MyTests.HaveLong.Complicated.NamespaceAsWell.AsMuchAs.EightyFive.Chars.IfThatMatters
{
    [TestClass]
    public class A_Long_ClassName_MayAlso_Contribute_ToThe_Issue_ThisOneIs_EightyFive_Characters_Long
    {
        [TestMethod]
        public async Task This_IsAMsTest_TestMethod_WithAnEightyFive_CharacterName_WhichWillShow_UnderExternal()
        {
        }
        [TestMethod]
        public async Task This_IsAMsTest_TestMethod_WithAnEightyFour_CharacterName_WhichWontShowUnderExternal()
        {
        }
    }
}

1

我尝试了被接受的解决方案,但没有改变任何东西,所以我还原了它,然后突然之间一切都为我修复了。VS2017。


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