2017-10-27 3 views
0

さまざまな「シナリオ」で機能を実行するテストスイートがあります。各シナリオでは、機能に関する特定の事実は常に真でなければならず、さらにシナリオ固有の事柄もいくつか確認する必要があります。私はそうのような私のテストクラスでは、この使用して継承を構造化しました特定の派生クラスの基本クラスで '共有' NUnitテストを無視する方法

abstract class BaseTestScenario 
- Common [Test]s for all scenarios 

class Scenario1 : BaseTestScenario 
- [Test]s specific to scenario 1 

class Scenario2 : BaseTestScenario 
- [Test]s specific to scenario 2 

... etc ... 

これは非常にうまく働いているが、今私がに対処するためのいくつかのテストの失敗を持っています。理想的には、私はそれらを解決している間に[Ignore]で特定の失敗をマークすることができ、誰もが既知の失敗を心配することなく残りのテストを実行できるようになります。

私の共通[Test]のいずれかを[Ignore]と特定のシナリオで、他のシナリオに影響を与えることなくマークする方法はありますか?

答えて

2

ignoreを使用するのではなく、Assume.Thatを使用できます。

[Test] 
public override void SomeTest() 
{ 
    // Run some logic to determine if the test should be skipped. 
    bool skipThisTest = true; 

    Assume.That(skipThisTest, "This test doesn't apply here."); 
} 

結果はテストが実行されないことになります(Visual StudioのテストエクスプローラではInclusive(青色)と表示されます)。

これは、クラスコンストラクタ内でAssume.Thatを呼び出す場合にも有効です。

+0

賢明な使用結果! – Charlie

関連する問題