2009-08-13 6 views
8

NUnitで特定のテストのみが実行されるようにカスタムフィルタを定義することはできますか?私はカスタム属性 "BugId"でマークされたNunitテストの多くを持っています。私が数値を渡し、その属性と数値でテストを実行できるようにフィルタを書くことは可能ですか?そうであればモックアップまたは実コードを表示します。NUnitのカスタムフィルタは可能ですか?

答えて

3

、NUnitの属性は密封されていないとサブクラスは、その基底クラスとして認識されます。したがって:

public class BugId : TestAttribute 
{ 
    public BugId(int bugNumber) : base("Test for Bug #" + bugNumber) { } 
} 

[BugId(1)] 
public void Test() {} 

、このようなコマンドラインで呼び出すことができます。

NUnitのコンソール/は=「バグ#1のためのテスト」

5

フィルタは、カスタム属性を使用する必要がありますか、またはあなたはNUnitのCategoryを使用することができますか?その後、

[Test] 
[Category("BugId-12234")] 
public void Test() 
{ 
    .... 
} 

ような何か...と/include=STRフラグを使用します。

nunit-console /include=BugId-12234 ... 

を?私は、カスタム属性を作るためにサブクラス化カテゴリをお勧めしますが、私はそれはあなたがあなたの属性に切り替えパラメータを追加することができないと思います...

+0

が含まNUnitのコードを見た後、私はこれがあると思いますNUnitを変更せずにできることは最高です。ご回答有難うございます。 –

0

私はこのエレガントな解決策を持っていたと思ったが、残念ながら、やりました私が期待どおりに動作しません。私はIgnoreAttributeクラスから派生することを望んでいました。私はこれがうまくいくと思った:

[Test, BugId("411")] 
public void TestMethod() 
{ 
    // your test 
} 

public class BugIdAttribute : IgnoreAttribute 
{ 
    private string id; 

    public BugIdAttribute(string id) : base("Ignored because it is bug #" + id) 
    { 
     this.id = id; 
    } 
} 

しかし、これ以上のことがあるようだ。申し訳ありませんが、実際には答えていないが、私はそれが自分よりもナニートの内部についてもっと知っている誰かのための良い踏み台だと思う。 NUnitの2.4.6以降で

+0

私はテストを無視したくありません。私は、バグが修正されていることを確認し、そのバグを伴うすべての関連テストを実行したいと考えています。 –

関連する問題