为了不通过单元测试污染我的项目,我喜欢为我的单元测试创建一个单独的项目;我在单元测试项目中添加了对测试项目的引用。但是,这与我的VSTO excel加载项项目不相称:当我创建一个单独的单元测试项目并转到Add Reference>项目,没有项目可供选择。
到目前为止我所做的是添加参考>浏览,然后从调试文件夹中选择加载项DLL。我也不时遇到问题,引用突然不起作用,需要删除/重新添加dll引用。
任何人都可以解释为什么VSTO项目不会作为常规项目出现吗?还有比我现在做的更好的方法吗?
答案 0 :(得分:4)
我可以回答你关于避免这个问题的最后一部分问题。
解决此问题的一种方法是将未明确引用VSTO库的代码分离到另一个项目中,然后对其进行测试 - 我知道这可能会涉及到实际拥有不引用VSTO的代码的努力
但是这样,您正在测试的代码是可以在不引用VSTO的情况下进行测试的代码,而VSTO特定的代码可能会通过集成测试(手动或通过像White这样的API进行测试 - 其中White没有不需要引用VSTO,因为它只运行使用VSTO的可执行代码)
虽然这可能意味着一些重要的重新设计 - 你可能需要创建包装类 - 例如 - 它现在可能不适合你,我相信这通常被视为一种良好的做法(它是一种separation of concerns)因为它可以更容易地管理代码,并且通常有助于将某些错误与VSTO并发症隔离开来。
答案 1 :(得分:3)
我在尝试将VSTO插件项目引用添加到WIX安装项目时遇到了同样的问题。我的解决方案是通过在记事本中编辑目标项目文件来手动添加项目引用。只需在项目文件中找到现有的ProjectReference xml标记,复制它,并替换文件路径详细信息,名称等。
更多的解决方法而非解决方案,但我希望它有所帮助。不确定VSTO插件项目的不同之处是阻止它们显示在添加引用对话框中。
答案 2 :(得分:0)
让我来到这里的是尝试对我的基于MVP的VSTO插件的Presenter进行单元测试。到目前为止,我看到的最佳答案是:http://blogs.msdn.com/b/pstubbs/archive/2006/09/15/756488.aspx
基本上,您远程运行VSTO插件,然后可以单独运行测试套件。这可以避免尝试模拟不可移植的:Office应用程序。
它允许您直接在需要测试的环境(作为实际Office应用程序的插件运行)中测试Presenter层。
答案 3 :(得分:0)
当我遇到这个问题时,是因为加载项目和单元测试项目被配置为不同版本的.NET。一旦版本相同,就可以使用。
答案 4 :(得分:0)
我无法看到添加对我的VSTO Addin的引用,直到我勾选注册COM互操作'在属性中的“构建”选项卡上。