5

ここで最近役立つ投稿を見つけました: NUnit 拡張機能

しかし、私の質問はまだ答えられていません。

そもそも「テストアセンブリ」って何?

次に、「 NUnit は各テスト アセンブリを検索して、読み込まれるアドインを探します」について、より詳細な説明を誰かに教えてもらえますか?

たとえば、私の VS2010 ソリューションには、プロジェクト A とプロジェクト B という 2 つのプロジェクトがあります。など)、そして、A は B を参照します。これは機能しますか? アドインは呼び出されますか?

そうでない場合は、さまざまな .cs ファイル (NUnit アドインを実装する) をプロジェクト A に直接含める必要があり、それらを別のプロジェクトに配置してテスト プロジェクトで参照する必要があることを意味すると思います。そうですか?

もしそうなら、別の問題が発生しました。プロジェクト C、D、E... もテスト プロジェクトである場合、各テスト プロジェクトにさまざまな .cs ファイル (NUnit アドインを実装する) を含める必要がありますか?

4

2 に答える 2

4

アドインを実行するには、次の 2 つの条件のいずれかを満たす必要があります。

  • アドインは、'AddIns' フォルダーに配置されるコンパイル済みの .dll です。
  • アドイン コードは、テストと同じアセンブリにあります。

ただし、アドイン コードの大部分を別のアセンブリに配置し、テスト アセンブリに小さな 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

于 2014-09-29T10:20:19.970 に答える
1

これは、チャーリーが Google グループで提供した回答です。チャーリーに感謝します! https://groups.google.com/forum/?fromgroups#!topic/nunit-discuss/yTKRKf2APLI

Re: [nunit-discuss] Re: NUnit 拡張

2012 年 5 月 21 日月曜日の午前 8 時 13 分に、Athrun Sun は次のように書いています。

こんにちはチャーリー、

「NUnit は各テスト アセンブリを検索して、読み込まれるアドインを探します」の詳細な説明を教えてください。

たとえば、私の VS2010 ソリューションには、プロジェクト A とプロジェクト B という 2 つのプロジェクトがあります。など)、そして、A は B を参照します。これは機能しますか? アドインは呼び出されますか?

その状況では、いいえ。B はテスト アセンブリではありません。

そうでない場合は、さまざまな .cs ファイル (NUnit アドインを実装する) を別のプロジェクトに配置してテスト プロジェクトで参照するのではなく、プロジェクト A に直接含める必要があることを意味していると思います。そうですか?

丁度

もしそうなら、別の問題が発生しました。プロジェクト C、D、E... もテスト プロジェクトである場合、各テスト プロジェクトにさまざまな .cs ファイル (NUnit アドインを実装する) を含める必要がありますか?

この機能は、開発中の拡張機能をテストできるようにするために提供されているため、複数のアセンブリで拡張機能を使用する必要があることは実際には問題になりません。実際、コードを 2 つのアセンブリに複製すると、NUnit は 2 つの異なるアドインを登録しようとし、驚くべき結果になる可能性があると思います。:-)

本番環境で使用する場合は、通常の方法で addins フォルダーにアドインをインストールする必要があります。また、コードからアドイン アセンブリを参照しないことをお勧めします。これにより常に問題が発生するわけではありませんが、アドインが 2 回読み込まれることがあります。

チャーリー - 引用テキストを表示 -

このディスカッションを Web で表示するには、https://groups.google.com/d/msg/nunit-discuss/-/a730uESbNJUJにアクセスしてください。- 引用文を表示 -

于 2012-05-22T06:48:35.490 に答える