在我的系统中模拟/测试核心对象

djc*_*edo 3 java unit-testing mocking

我被要求改变一些对我们工作的系统来说是核心的类.有问题的类每个都需要5-10个不同的相关对象,这些对象本身需要相同数量的对象.

数据也从几个数据源中提取,项目使用EJB2,因此在测试时,我运行时没有容器来引入我需要的依赖项!

我开始对这项任务感到不知所措.我已经尝试过使用JUnit和Easymock进行单元测试,但是只要我模拟或存根一件事,我发现它需要更多.所有东西似乎都是紧密耦合的,所以我用我的存根达到了大约3或4级,以防止NullPointerExceptions.

通常使用这种类型的任务,我只需要进行更改和测试.但最短的构建周期大约是10分钟,我喜欢在执行之间进行非常短的迭代编码(可能因​​为我对编写完美代码的能力不太自信).

任何人都知道一个好的策略/工作流程来摆脱这个泥潭?

Mar*_*ann 5

正如你的建议,听起来你的主要问题是你正在使用的API太紧密耦合了.如果您能够修改API,那么隐藏接口后面的直接依赖关系会非常有帮助,这样您就可以在直接依赖关系中切断依赖关系图.

如果无法做到这一点,自动模拟容器可能会有所帮助.这基本上是一个容器,它自动指出如何返回嵌套抽象的具有良好默认行为的模拟.当我在.NET框架上工作时,我不推荐任何Java.

如果您想了解单元测试模式和最佳实践,我只能推荐xUnit测试模式.

对于解耦紧耦合代码的策略,我建议有效地使用遗留代码.