2

プラグイン アーキテクチャを使用してアプリケーションを作成しています。拡張ポイントが適切に定義されているため、プラグインの汎用テストを作成したいと考えています。プラグインには、内部のものをテストするための独自のテストがあります。

すべてのプラグインに「明白な」もののためのテストを含める必要がないように、これらのテストを作成するための好ましい方法は何ですか? 単体テスト フレームワークに関連して、そのようなテストがどのように行われるかに興味があります。

誰かがプラグインの一般的なテストを行っているオープンソース プロジェクトを教えてくれれば、それで十分です。私のアプリケーションは C# (および構成用の MEF) で作成されているため、同様の (厳密に型指定された) 言語 (Java など) で作成されたプロジェクトが優先されます。

4

1 に答える 1

1

一般的なテストを基本クラスに入れ、そこからプラグインごとに派生させることが実行可能な方法のようです。

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 を使用するテストでは、基本クラスが別のアセンブリにある場合、基本クラスでテストを実行できないというバグに注意する必要があります。これは Visual Studio 2010 では修正されておらず、2012 については不明です。

MSTest を使用した共有単体テスト

Visual Studio Test (MSTest) と、異なるアセンブリに存在する基本クラスの継承サポートの欠如

于 2013-09-09T13:49:57.210 に答える