2017-11-10 4 views
0

とテストの実装では、私は次のようなテストの定義ANその実装を分割したいと思います:スプリットテスト定義とNUnitの、xUnitフレームまたはVisual Studioテスト

[TestFixture] 
public abstract class ContainerTests 
{ 
    [Test] 
    public abstract void BuildContainer(); 
} 

public class UnityTest : ContainerTests 
{ 
    public override BuildContainer() 
    { 
     // Implementation 
    } 
} 

は私が抽象をしたいのですがシナリオの定義とそれを異なる種類で実装して比較することができます。 TestRunnerは、ベースクラスで定義されていても、継承されたクラスからすべてのテストをキャッチする必要があります。これを行う方法はありますか?

敬具、あなたが楽しく行うことができますのxUnitと zimmy

+0

あなたはインターフェイスのIContainerTestsを使ってテストの実行を強制することができます –

+0

あなたの答えをありがとう。私はTestRunnerが継承したクラスのすべてのテストを捕まえなければならないという重要な制約を忘れていました。その定義は基本クラスにあります。私はNUnitを試して、そこでは[TestFixture]をインターフェイスに定義することはできません。 – zimmybln

答えて

1

: -

public abstract class ContainerTests 
    { 
     [Fact] 
     public abstract void BuildContainer(); 
    } 

    public class UnityContainer : ContainerTests 
    { 
     public override void BuildContainer() 
     { 
      Assert.Equal(1,2); 
     } 

    } 
+0

それは動作します。ありがとうございました。 – zimmybln

0

それはあなたがNUnitのに与えるコードを記述することができれば、それはのすべての開発者が派生していることを意味しますクラス名はBuildContainerでなければなりません。このテストでは、何かをテストしたり、空であったりすることもできます。だからあなたの意図が何かをテストするテストを実装するdevsを強制する場合は、これは仕事をしません。

しかし、できることは、派生クラスが実装しなければならない特定の抽象メソッドへの呼び出しを使用して、基本クラスにテストを実装することです。一般に、これらのメソッドは、必要なアサートを自分で実行する代わりに、基本クラスでアサートできるものを実行することをお勧めします。

一般に、NUnitのテストメソッドを無効にする能力がないのは、ほとんどの場合、それほど良い考えではないという著者の見解によるものです。私は反例であるケースを聞くことに興味があるだろう。

関連する問題