【问题标题】:How to Unit Test Visual Studio AddIn interacting with VS DOM如何对与 VS DOM 交互的 Visual Studio 插件进行单元测试
【发布时间】:2011-03-10 12:41:27
【问题描述】:

我开发了一个 Visual Studio 插件,它与 Visual Studio DOM 交互并修改加载的解决方案。
虽然我已经努力分离与 DOM 交互的代码并可以通过单元测试对其他业务逻辑进行单元测试,但有没有办法对 VS DOM 交互功能和添加自定义菜单项的加载项初始化代码进行单元测试视觉工作室?

【问题讨论】:

  • 这也是我一直在努力解决的问题。到目前为止,我能做的最好的事情就是模拟接口并根据我对 VS 应该做什么的期望执行测试。

标签: .net unit-testing automated-tests vs-extensibility


【解决方案1】:

这可能会以某种方式回答这个问题...我有一个代码示例来创建一个 DTE VS 实例,我希望然后我可以在我的单元测试中使用它来注入我的类,它与 VS 交互,然后希望分析 DTE 对象以确认测试成功标准。我还没来得及在测试中尝试它,但它看起来很有希望。

        DTE2 dte = null;
        try
        {
            Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
            object inst = System.Activator.CreateInstance(type, true);
            dte = (EnvDTE80.DTE2)inst;

            dte.Solution.Open(@"C:\Demo.sln");

            // Inject into class under test

            // Perform the test

            // Analyse the DTE to test for success.

        }
        finally
        {
            if (dte != null)
            {
                dte.Quit();
            }

【讨论】:

  • 这也为可能出现的计时问题提供了一些帮助msdn.microsoft.com/en-us/library/ms228772(VS.80).aspx
  • Carlos J.Quintero 在social.msdn.microsoft.com/Forums/eu/vsx/thread/… 中的回答怎么样?
  • 可能出现诸如 System.Runtime.InteropServices.COMException (0x80080005) 之类的错误:检索具有 CLSID {656D8328-93F5-41A7-A48C-B42858161F25} 的组件的 COM 类工厂失败,原因是以下错误:80080005服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。
  • 任何带有完整源代码示例的最终解决方案?
猜你喜欢
  • 2012-06-20
  • 2023-03-17
  • 2013-12-12
  • 2020-06-22
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
相关资源
最近更新 更多