那里有人有测试“流程外组件”的经验吗?我正在测试一些配置为在进程外激活的 Com+(服务组件)和 WCF 服务,但我不确定在这些情况下测试的最佳实践是什么。
我所做的是给公共类他们自己的 IOC 容器,他们可以在激活时建立。这很好用,但我一尝试单元测试就会遇到问题,原因有两个......
我想注入的任何依赖对象都需要可序列化,因为单元测试在不同的进程中运行。如果我想将一个附加模块(ninject)加载到 com+ 内核/ioc 容器中,我需要编写自己的模块以使其可序列化。我不喜欢为了做测试而让事情可序列化。
进程外程序集需要安装到 GAC 中,并且在 Com+ 的情况下需要注册。这使得测试很痛苦,因为它们需要在测试之前安装。
目前我只能想到两种方法来解决这个问题。
有一个单独的工作副本用于运行测试,其中我修改了配置以运行进程中的程序集。显然这并不理想,因为现在我正在修改代码只是为了使其可测试。尽管我可以忍受这一点,因为它不涉及任何功能更改。
让单元测试从 Com+ 或 WCF 组件继承,以便测试可以在相同的进程边界中运行。(这需要将单元测试安装到 GAC 中)