从单元测试项目中引用 Web 服务项目:项目不在列表中
Posted
技术标签:
【中文标题】从单元测试项目中引用 Web 服务项目:项目不在列表中【英文标题】:Referencing a web service project from unit testing project: project not in list 【发布时间】:2010-11-12 17:51:39 【问题描述】:问题:试图从我的 VS 单元测试项目中引用一个 .NET 2.0 Web 服务项目。
在单元测试项目中的References文件夹右击->添加引用。 .NET 2.0 Web 服务未列在可供参考的项目列表框中。
我知道这个用例是可能的;我之前曾成功引用(在其他解决方案中)来自 .NET 3.5 单元测试项目的 .NET 3.5 Web 服务。
这个想法是对在我的 .asmx 旁边的类中找到的所有公共方法进行单元测试。我已将所有业务逻辑从 .asmx 文件本身抽象到 Web 服务项目的子目录中的 .cs 文件中。所以这里的想法是测试执行业务逻辑的类,Web 服务本身(处理 HTTP 请求)。
配置:
Visual Studio 2008 .NET 3.5 兼容性的 VS 单元测试项目 .NET 2.0 兼容性的 Web 服务项目 版本 9 的解决方案文件。问题:您知道为什么 Visual Studio 2008 不允许我从 .NET 3.5 单元测试项目中引用 .NET 2.0 Web 服务吗?
【问题讨论】:
【参考方案1】:没有。切勿直接引用 Web 服务项目。你想添加一个“网络参考”。
【讨论】:
谢谢约翰,我经常学习并感谢您对 SO 的所有回答。这里的关键是我之前已经将这个直接引用到 v3.5 解决方案中,并且效果很好!单元测试程序集应该调用 Web 服务的类和公共方法。听起来您反对直接引用 Web 服务程序集的业务层的想法。我很想听听为什么/不。谢谢! 业务层不属于 Web 服务程序集。唯一属于那里的是服务。其余的应该在单独的程序集中,并且当然是可测试的。【参考方案2】:这个问题比之前描述的要窄一些。
最终的结果是:
Web 服务项目实际上是一个带有单个 .asmx 文件的网站项目 (!)。我很震惊地意识到这一点。呵呵!
该项目是作为 Web 服务项目从头开始重新创建的。所有逻辑都移至John's advice in the comments 上的外部程序集。
【讨论】:
以上是关于从单元测试项目中引用 Web 服务项目:项目不在列表中的主要内容,如果未能解决你的问题,请参考以下文章