我想重构一个 DLL,使其也成为 MEFable。我是否应该对类是否用 [Export] 或 [Import] 以及其他 MEF 属性进行修饰进行单元测试?
最佳答案
您的测试应该更多地关注目标而不是机制。创建测试来验证诸如“如果我将类型 X、Y 和 Z 一起放入容器中,那么我可以从容器中提取 IFoo 接口(interface)”之类的内容,如下所示:
[Test]
public void Can_get_IFoo_from_container_with_Foo_Bar_Baz()
{
var catalog = new TypeCatalog(typeof(Foo), typeof(Bar), typeof(Baz));
using (var container = new CompositionContainer(catalog))
{
var test = container.GetExportedValue<IFoo>();
}
}
这不再是真正的“单元”测试,因为它涉及多个类和一个 IoC 容器。我们将其称为“组合测试”。
关于unit-testing - 我应该对一个类进行单元测试以获取 MEF 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446740/