2009-08-12 151 views
1

任何人都有测试“超出过程程序集”的经验吗? 我正在测试一些Com +(服务组件)和WCF服务配置为在进程外激活,我不确定在这些情况下测试的最佳实践是什么。单元测试组件不足处理

我所做的是给予公共课程他们自己的IOC容器,他们可以在激活时建立起来。这工作得很好,但我只要我尝试和2个原因单元测试遇到的问题...

  1. 的任何依赖对象我想注入的需求,因为单元测试是在一个不同的进程中运行的可序列化。如果我想将一个额外的模块(ninject)加载到com + kernel/ioc容器中,我需要编写自己的模块以使其可序列化。我只是为了做测试而将事物序列化是不舒服的。

  2. 进程中的组件需要安装到GAC中,并且在需要注册Com +的情况下。这使得测试变得很痛苦,因为他们需要在测试之前进行安装。

我现在只能想到两种方法来解决这个问题。

  1. 对运行在那里我已经修改,以在进程中运行的组件测试配置一个单独的工作拷贝。很明显,这并不理想,因为现在我正在修改代码以使其可测试。尽管我可以忍受这一点,因为它没有涉及任何功能上的变化。

  2. 让单元测试继承自Com +或WCF组件,以便测试可以在相同的进程边界中运行。 (这需要单元测试将要安装到GAC)

+0

这是Jon Skeet的一个hehe – 2009-08-12 01:36:03

回答

1

我会去你的第一个建议:对运行中的组件在运行过程中测试一个单独的工作拷贝。

优点是:

  • 一旦你有你的系统上这个工作将在其他团队成员的机器上运行没有任何配置。

  • 由于您不进行进程间调用,因此测试运行速度将显着加快。

我记得我第一次开始测试驱动开发。像你一样,我不愿意改变我的代码来适应自动化测试。我逐渐改变了自己的想法。这些库需要为两个同样重要的客户提供服务:生产客户端代码和测试。

2

一般来说,我会为一个进程中的组件和另一个进程中的组件进行测试,而不一定会打扰中间的点(只要保持尽可能薄)。

如果您正在测试两个独立进程之间的交互,我认为这几乎是定义的集成测试。