7

数百のテスト クラスがあり、そのうちの数十は [TestFixture] [Explicit] [Category("IntegrationTests")] という属性でマークされているため、夜間の自動ビルドでのみ実行されます。残りの TestFixtures には、カテゴリが指定されていません (また、Explicit とマークされていません)。

テストを実行するために実行している NAnt タスクは次のとおりです。

<nunit2>
    <test>
        ...
        <categories>
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

もちろん、これは未分類のテストを実行しません。

私はこのようなことをしたいと思います:

<nunit2>
    <test>
        ...
        <categories>
            <include name="*" />
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

ここでは、分類されていないすべてのテストが統合テストとともに実行されます。これは可能ですか?もしそうなら、構文は何ですか?

(注: 上記の NAnt ソリューション、または NUnit コマンドライン ソリューションのいずれかを探しています。NUnit を異なるオプションで 2 回実行するか、すべての TestFixtures にカテゴリを配置することは確かに可能です。これらは私が行っている回避策です。必要に応じて使用しても構いませんが、分類されていないテストを直接指定できるともっとクールです。)

4

2 に答える 2

8

私は同じボートに乗っており、Category属性をテストやテストフィクスチャだけでなく、アセンブリ全体に適用できることに気付くまで、イライラしていました。

ローカルで実行するテストを含む2つのテストアセンブリと、ビルドサーバーでのみ実行する必要があるテストを含むもう1つのテストアセンブリがあります。最初の2つのプロジェクトのAssemblyInfo.csにこの属性を追加しました:[assembly: NUnit.Framework.Category("Always")]。3番目のテストプロジェクトでは、説明したようにカテゴリ属性を使用します[Explicit, Category("PublicDatabase")]。ビルドサーバーはNUnitを呼び出し/include=Always,PublicDatabase、目的の結果をもたらします。最初の2つのアセンブリのすべてのテストが実行PublicDatabaseされ、3番目のアセンブリのテストのみが実行されます。

最初の2つのプロジェクトでNUnitをローカルで実行するときは、個々のアセンブリで実行するだけで、カテゴリを指定する必要はまったくありません。

于 2010-11-01T22:01:29.440 に答える
0

いいえ、状況を考えると、NUnit の 1 回の実行でやりたいことを実行する方法はありません。明示的な属性を削除した場合は、分類された不要なテストをすべて除外することで、1 回の実行で実行できます。

基本的に、カテゴリにジャンプする場合は、すべてのテストをカテゴリ化する必要があります。

于 2010-10-20T21:34:43.653 に答える