将Microsoft Fakes Framework与VSTO应用程序级外接程序一起使用基于XML的功能区

时间:2014-10-13 21:37:27

标签: mocking vsto ribbon microsoft-fakes ribbonx

我有一个"应用程序级" VSTO加载项(与#34; Document-Level"相对),在Excel中运行。加载项运行正常。我没有使用Ribbon设计器,而是使用Ribbon XML选项。在这样做时,您最终会得到一个派生自Office.IRibbonExtensibility的Ribbon类,其中包含以下各种方法:

    public void OnTextButton(Office.IRibbonControl control)
    { ....
    }

现在,当我创建一个单元测试项目时,添加对我的加载项的引用,然后选择" Add Fake Assembly"从参考文献下的右键菜单中,我收到错误。

我不相信它与我的项目有任何关系因为我验证了样本加载项代码发生了同样的事情,例如此项目:http://www.codeproject.com/Articles/296288/Excel-Add-in-for-Exporting-Excel-data-to-XML

要重现,我下载了加入: 1.在Visual Studeio 2010/2012/2013中打开它 2.在同一解决方案中创建单元测试项目。 3.将加载项项目添加为单元测试项目的解决方案级别引用。在这个特定的示例中,它被称为" ExcelExportXML"。 4.然后展开Unit Test项目中的References树,右键单击加载项引用,即ExcelExportXML,并选择" Add Fake Assembly"。这要求您至少拥有Visual Studio的高级版本。专业版还不够。

你最终会遇到这样的错误:

error CS0234: The type or namespace name 'IRibbonControl' does not exist in the namespace 'eexml::Microsoft.Office.Core' (are you missing an assembly reference?) [...\UnitTestProject1\obj\Debug\Fakes\eexml\f.csproj]

最好重复上述步骤来重现问题 - 只需几分钟。

我的要求就是这个。有没有办法在不切换到另一个模拟/隔离器框架的情况下完成这项工作。我真的想避免任何人建议我不使用" Microsoft Fakes Framework"因为这并不是有用的输入,除非你绝对肯定没有办法让两种微软技术有效地一起玩。

我已尝试在.fakes文件中使用各种组合。这是我到目前为止所尝试的内容:

  <StubGeneration>
    <Clear />
    <Remove TypeName="Ribbon1" />
    <Remove TypeName="ExcelAddIn1.Ribbon1" />
    <Remove FullName="ExcelAddIn1.Ribbon1"/>
    <Remove Namespace="ExcelAddIn1"/>
    <Remove Namespace="Microsoft.Office.Core"/>
    <Remove Namespace="eexml::Microsoft.Office.Core"/>
    <Remove FullName="Microsoft.Office.Core.IRibbonControl"/>
    <Remove TypeName="IRibbonControl"/>
  </StubGeneration>

我花了大约半天研究这个。任何帮助(没有将组件拆分为VSTO和非VSTO部件)将不胜感激。

0 个答案:

没有答案