首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring4D中解决问题的最佳实践?

在Spring4D中解决问题的最佳实践?
EN

Stack Overflow用户
提问于 2015-04-13 21:26:14
回答 1查看 1.1K关注 0票数 0

在spring4d演示中,使用ServiceLocator.GetService<MyType>('Name')来解析类型。但是为什么不使用GlobalContainer.Resolve<MyType>('Name')呢?我看不出这种方法有什么好处。

EN

回答 1

Stack Overflow用户

发布于 2015-05-01 21:01:43

有一个用例,我使用ServiceLocator:当编码使遗留代码项目可单元测试时……

有一个老项目,在多个地方,有一个对象的构造函数调用,我为其编写测试(新的和更改的方法只在类中,其中注入是不可能的,例如当在按钮事件中创建和销毁窗体时)。

在单元测试中,spring4d有助于实例化被测类:

我可以为生产项目使用dpr中的GlobalContainer和一个特殊的(仅限测试的) TContainer-object,它在Testfixture.Setup中构造,在Testfixture.TearDown中销毁……我还重新初始化了全局服务定位器以使用我的测试容器(原因:我在测试中使用GlobalContainer的经历很糟糕,您不能在Testfixture.TearDown中从GlobalContainer中注销一个类型)。

所以现在,我在dpr中有了一个很大的方法,我在生产代码项目中将所有类型注册到GlobalContainer。在我的test-fixture-class的Setup-Method中,我将测试所需的所有类型注册到我的test -Container。在方法中,我将它们改为可单元测试的,我使用ServiceLocator构造测试中的类,以前使用构造函数调用的地方。

对我来说,这是使这样的遗留代码项目可单元测试的唯一方法……但我的战略目标是有一天替换大部分代码(逐部分替换,包括重新初始化的ServiceLocators)。现在就是不可能替换它(太多的成本,太多的风险...)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29606485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档