在具有插件架构的应用程序中对插件进行单元测试

本文关键字:插件 单元测试 应用程序 插件架 | 更新日期: 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) 和缺乏对驻留在不同程序集中的基类的继承支持