在具有插件架构的应用程序中对插件进行单元测试
本文关键字:插件 单元测试 应用程序 插件架 | 更新日期: 2023-09-27 18:30:42
我正在创建一个具有插件架构的应用程序,我想为插件创建通用测试,因为扩展点定义得很好。插件将有自己的测试来测试内部内容。
创建这些测试的首选方法是什么,以便每个插件都不需要包含对"明显"内容的测试?我感兴趣的是如何与单元测试框架相关的此类测试。
如果有人向我指出一个开源项目,它确实对插件进行了这样的通用测试,那就足够了。我的应用程序是用 C#(和用于组合的 MEF)制作的,因此最好使用类似(强类型)语言(如 Java)编写的项目。
似乎将
通用测试放入基类并从中为每个插件派生是一种可行的方法:
public interface IPluginComponent
{
}
[TestClass]
public abstract class BaseTests
{
protected abstract IPluginComponent CreateComponent();
[TestMethod]
public void SomeTest()
{
IPluginComponent component = this.CreateComponent();
// execute test
}
}
public class MyPluginComponent : IPluginComponent
{
}
[TestClass]
public class MyPluginTests : BaseTests
{
protected IPluginComponent CreateComponent()
{
return new MyPluginComponent();
}
[TestMethod]
public void CustomTest()
{
// custom test
}
}
但是,使用 MSTest 的测试应注意一个 bug,即如果基类位于不同的程序集中,则无法在基类中运行测试。这在Visual Studio 2010中没有修复,不确定2012:
与 MSTest 共享单元测试
Visual Studio Test (MSTest) 和缺乏对驻留在不同程序集中的基类的继承支持