从单元测试项目中引用 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 服务项目:项目不在列表中的主要内容,如果未能解决你的问题,请参考以下文章

Self Host web api并从单元测试项目访问它

NUnit3 测试不在 TFS 构建上运行

c#单元测试

如何优雅的写单元测试?

如何优雅的写单元测试?

如何从单元格中另一个项目的手势获取单元格引用