load - NUnit 插件 - 我必须在每个测试项目中包含插件实现吗?

标签 load nunit add-in

我最近在这里发现了一个有用的帖子:NUnit extension

但是我的问题仍然没有得到回答。

首先,什么是'测试组件 ' 反正?

其次,谁能给我一个更详细的解释' NUnit 在每个测试程序集中搜索要加载的插件 '?

例如,我的 VS2010 解决方案中有两个项目,比如说项目 A 和项目 B。A 是一个测试项目(里面包含 '[Test]'),B 是一个 NUnit 插件项目(包含插件安装程序,EventListener 接口(interface)实现,等等),并且,A 引用 B。这行得通吗?插件会被调用吗?

如果不是,我认为这意味着我必须将各种 .cs 文件(实现 NUnit 插件)直接包含在项目 A 中,而不是将它们放入单独的项目中并在测试项目中引用它。你是这个意思吗?

如果是这样,另一个问题是,当我有项目 C、D、E... 也是测试项目时,我必须在每个测试项目中包含那些不同的 .cs 文件(实现 NUnit 插件)?

最佳答案

要运行加载项,必须满足以下两个条件之一:

  • 加载项是一个已编译的 .dll,位于“AddIns”文件夹中。
  • 插件代码与测试在同一个程序集中。

  • 但是,有一种方法可以将大部分插件代码放在不同的程序集中,并在测试程序集中有一个小的 shim 类,它允许 NUnit 找到它,例如:

    在插件程序集中
    public class CustomEventListener : IAddin, EventListener
    {
        public bool Install(IExtensionHost host)
        {
            IExtensionPoint listeners = host.GetExtensionPoint("EventListeners");
            if (listeners == null)
                return false;
    
            listeners.Install(this);
            return true;
        }
    
        ........ <Implemented Interfaces> .......
    
    }
    

    在测试组装中

    在任何你喜欢的地方添加这个类:
    [NUnitAddin]
    public class MyAddin : CustomEventListener { }
    

    NUnit 将发现 NUnitAddin属性并调用基础 CustomerEventListener 中的代码代码,即使它在不同的程序集中。

    关于load - NUnit 插件 - 我必须在每个测试项目中包含插件实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680350/

    相关文章:

    javascript - 控制台登录 Javascript Office 插件

    java - 从其他Jframe加载图像,Java

    jQuery 函数 load 重新加载整个页面

    .net - 一个好的 gradle nunit 插件?

    c# - 单元测试总是中止

    visual-studio-2010 - 用于启动 Visual Studio 并禁用该实例的加载项/扩展的命令行

    c# - 使用 PowerPoint 2010 互操作的笔和记号笔

    javascript - Google Feed API 导致页面空白

    php - 如何使用 jquery load() 和 zend 框架加载 html 文件?

    nunit - 找不到具有 AssemblyQualifiedName、URI 或 FriendlyName 'nunit' 的测试记录器