我最近在这里发现了一个有用的帖子:NUnit extension
但是我的问题仍然没有得到回答。
首先,什么是'测试组件 ' 反正?
其次,谁能给我一个更详细的解释' NUnit 在每个测试程序集中搜索要加载的插件 '?
例如,我的 VS2010 解决方案中有两个项目,比如说项目 A 和项目 B。A 是一个测试项目(里面包含 '[Test]'),B 是一个 NUnit 插件项目(包含插件安装程序,EventListener 接口(interface)实现,等等),并且,A 引用 B。这行得通吗?插件会被调用吗?
如果不是,我认为这意味着我必须将各种 .cs 文件(实现 NUnit 插件)直接包含在项目 A 中,而不是将它们放入单独的项目中并在测试项目中引用它。你是这个意思吗?
如果是这样,另一个问题是,当我有项目 C、D、E... 也是测试项目时,我必须在每个测试项目中包含那些不同的 .cs 文件(实现 NUnit 插件)?
最佳答案
要运行加载项,必须满足以下两个条件之一:
但是,有一种方法可以将大部分插件代码放在不同的程序集中,并在测试程序集中有一个小的 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/