测试Unity运行时配置

时间:2011-01-18 07:44:11

标签: testing dependency-injection unity-container

使用DI容器和特定的Unity困扰我的一件事,因为那是我使用的那个。如果我忘记注册一个类型,程序将崩溃,当我后来尝试解决需要忘记注册的类型。我过去对new的显式调用,编译器会为我检查这个,但现在没有强制检查。

我的大多数解析调用都是在程序初始化期间进行的,因此问题并不大。 但我仍然想测试它,一个想法可能是设置容器注册,然后扫描程序集以调用container.resolve。

我从来没有见过这样的东西,所以我走错了路?而应该进行单元/集成测试吗?

1 个答案:

答案 0 :(得分:2)

一些容器(StructureMap IIRC)有一些方法可以调用它们让它们自我诊断,但AFAIR Unity没有这样的方法。

我一直怀疑自我诊断方法提供了多少价值。它只告诉您已注册的组件内部一致,但您仍然可以要求容器解决从未配置过的内容。假设你配置了Foo,Bar和Baz。这些可能是一致的,但如果你要求Qux怎么办?

自我诊断永远不会遇到这种情况。

我宁愿推荐一套集成测试来尝试解析所有适当的输入。如果您遵循Register Resolve Release pattern,则应为给定的应用程序明确定义Resolve方法的输入集。