【问题标题】:Tests Disappeared in Visual Studio 2013测试在 Visual Studio 2013 中消失
【发布时间】:2014-02-07 16:40:48
【问题描述】:

我的所有单元测试在 Visual Studio 2013 中突然消失了,我似乎无法在测试资源管理器中找到它们。

我们使用 Visual Studio 2010 作为我们的主要环境。我安装了 Visual Studio 2013 Express Desktop 作为我选择的编辑器,在其中工作,然后使用 2010 进行最终构建/签入。2010 年一切正常。但 2013 express 将不再发现测试。它曾经是,然后在进行更改的过程中它停止了。这些是 mstest 测试。

我得到以下测试输出:

------ Discover test started ------
TestTypes\13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b could not be loaded because the TIP could not be instantiated for the following reason(s): System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Tip, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Tip, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
   at System.Type.GetType(String typeName, Boolean throwOnError)
   at Microsoft.VisualStudio.TestTools.TestManagement.TipDelayLoader.LoadTip()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

========== Discover test finished: 0 found (0:00:00.1640164) ==========

尝试修复的步骤:

  • 从存储库中签出新的源代码副本
  • 验证其他开发者没有这个问题(他们的 2013 年安装找到测试)
  • 修复 2013
  • 删除 2013,重新启动,安装 2013
  • 创建了新的 WPF 项目并添加了测试(发现了该测试,但问题未解决)

任何建议将不胜感激。我的下一步是擦除系统,但这会很痛苦。

【问题讨论】:

    标签: visual-studio-2010 visual-studio-2013 mstest


    【解决方案1】:

    你在使用 nUnit 吗?我刚搬到新电脑时遇到了类似的情况,导致所有现有测试都消失了。

    转到工具->扩展和更新->选择左侧的在线->在右上角的搜索框中输入“nunit测试适配器”并安装它。

    重新启动 Visual Studio。

    稍后重建,测试再次出现。

    【讨论】:

    • 感谢您的回答。按照您的解决方案后,我的问题仍然没有得到解决。因为我认为您错过了完成它的步骤。完成所有步骤后,我们必须重新启动 Visual Studio。
    【解决方案2】:

    我通过执行以下操作间接解决了这个问题:

    • 添加了一个名为 Testable 的新空类
    • 添加了一个新的单元测试来测试它

    (此时我所有的旧单元测试都显示出来了,还有新的)

    • 将所有更改恢复为签入的内容

    (仍然发现旧的单元测试)

    似乎我的代码中没有的东西导致了问题,添加新的单元测试修复了它。没有说明发生的原因,但如果您遇到问题,此过程可能会为您解决。

    【讨论】:

      【解决方案3】:

      遇到了完全相同的问题!

      在我们的解决方案中,我们有树文件:

      • Lo​​cal.testsettings
      • Lo​​calTestRun.testrunco​​nfig
      • TraceAndTestImpact.testsettings

      备份这些文件,删除它们并在没有它们的情况下启动解决方案。 构建并找到文件。 然后将文件移回,它仍然有效...

      这花费了我们大约两天的时间进行故障排除。如果您有同样的问题,可能值得一试。

      【讨论】:

        【解决方案4】:

        每当您对 Google 测试运行程序有问题时,我希望您尝试将项目作为 exe 运行,我遇到了同样的问题,当我使用命令行运行它时,我发现我使用的一些 dll 在我的执行文件夹。

        1. 如果您在项目中使用了任何 dll,请验证它们是否在您的执行文件夹(或 GAC)中
        2. 尝试通过 exe(命令行)运行 gtest 项目,您将获得信息丰富的错误消息,而不是测试消失。

        【讨论】:

          【解决方案5】:

          我知道这个问题很老了,但我遇到了同样的问题,我的一些测试在 VS 2013 中停止显示 NUnit 3。

          我的测试没有显示,因为我在一个类上实现了IFormattable,并且在我重建项目后,该类的所有测试都消失了。我使用了Visual Studio生成的IFormattable接口的默认实现代码,它在生成的方法中抛出了NotImplementedException。事实证明,当类的ToString 方法抛出异常时,NUnit 测试运行器将不会显示任何测试。在我正确实现ToString 方法后,所有测试都开始正常显示。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多