unit-testing - 我应该对一个类进行单元测试以获取 MEF 属性吗?

标签 unit-testing tdd mef

我想重构一个 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/

相关文章:

asp.net-mvc-3 - MEF 和 MVC 3 - 如何从 mef 容器动态加载嵌入 View ?

c# - 在mef中卸载一个dll文件

java - 是否有用于 Spring 单元测试的内存/模拟 MySQL 包?

java - 是否有能够重用 Given, Then 的 BDD java 框架? (具有不同的 When 步骤)

java - Spring Boot 测试 (MockMvc) - 收到 HTTP 状态代码 400,预计为 200

c# - MEF 2 - 未找到与具有多个重载的构造函数的约束相匹配的导出

ruby-on-rails - 为 ActiveRecord 关联扩展编写规范

java - 有没有办法使用 TestNG 数据提供程序为测试用例指定特定名称?

java - JUnit:setUp 和tearDown 方法未按预期工作

java - 如何使用测试驱动开发方法验证 boolean 方法?