2016-12-14 4 views
1

Nユニットを使用してテストプロジェクトを作成しようとしています。テストケースを完全に別のクラスに分割することが可能かどうか、またはデータをファイルまたは部分クラスにプッシュする唯一の実行可能な方法があるのだろうかと思っていましたか?基本的には、すべてのデータとテストを1つのファイルに保存するのではなく、別々のファイルに保存したいと思っています。あるいはそれ以上の標準と、各ルールテストのための異なるクラスを作成することもできます。NUnit別のクラスのDataSource

[Test, TestCaseSource("TenantsRules")] 
    public void CheckDNQTenantsRules(DNQTenantData testData) 
    { 
     CoreServicesBroker.DNQCoreServiceBroker broker = new CoreServicesBroker.DNQCoreServiceBroker(); 
     string actualDNQReason = string.Empty; 

     int actualReturnCode = broker.CheckDNQTenants(testData.FormCode, testData.StateCode, testData.EffectiveDate, testData.NumberOfTenants, ref actualDNQReason); 

     Assert.AreEqual(testData.ExpectedDNQReturnCode, actualReturnCode); 
     Assert.AreEqual(testData.ExpectedDNQReason, actualDNQReason); 
    } 

public static IEnumerable<DNQTenantData> TenantsRules() 
    { 
     yield return new DNQTenantData() { FormCode = 9, StateCode = "OH", EffectiveDate = DateTime.Now, NumberOfTenants = 7, ExpectedDNQReturnCode = 1, ExpectedDNQReason = "Number of Tenants exceeded." }; 
     yield return new DNQTenantData() { FormCode = 9, StateCode = "OH", EffectiveDate = DateTime.Now, NumberOfTenants = 5, ExpectedDNQReturnCode = 0, ExpectedDNQReason = "" }; 
    } 
+0

どのように基底クラスについては?しかし、正確に何を抽出しようとしているかを表現するために実際のコードを投稿していないので、実際に何をしようとしているのかは分かりません。 – nozzleman

+0

Nユニットがそれを達成できるかどうかわかりませんが、試してみることができます。データをベースに置き、そのテストを派生させますか? –

+0

ええ、私が言ったように、いくつかのコードを投稿して、あなたが抽出したいものを教えてください。 – nozzleman

答えて

2

私はNUnits TestCaseDataはあなたの問題を解決すると信じて:

[TestFixture] 
public class YourTest 
{ 
    [Test, TestCaseSource(typeof(YourTestCaseProvider), nameof(YourTestCaseProvider.TenantsRules)] 
    public void CheckDNQTenantsRules(DNQTenantData testData) 
    { 
     CoreServicesBroker.DNQCoreServiceBroker broker = new CoreServicesBroker.DNQCoreServiceBroker(); 
     string actualDNQReason = string.Empty; 

     int actualReturnCode = broker.CheckDNQTenants(testData.FormCode, testData.StateCode, testData.EffectiveDate, testData.NumberOfTenants, ref actualDNQReason); 

     Assert.AreEqual(testData.ExpectedDNQReturnCode, actualReturnCode); 
     Assert.AreEqual(testData.ExpectedDNQReason, actualDNQReason); 
    } 
} 

public class YourTestCaseProvider 
{ 
    public static IEnumerable TenantsRules() 
    { 
     yield return new TestCaseData(new DNQTenantData() { FormCode = 9, StateCode = "OH", EffectiveDate = DateTime.Now, NumberOfTenants = 7, ExpectedDNQReturnCode = 1, ExpectedDNQReason = "Number of Tenants exceeded." }) 
     yield return new TestCaseData(new DNQTenantData() { FormCode = 9, StateCode = "OH", EffectiveDate = DateTime.Now, NumberOfTenants = 5, ExpectedDNQReturnCode = 0, ExpectedDNQReason = "" }); 
    } 
} 
+0

ありがとうございました! –

+0

うれしい私は助けることができました! ;) – nozzleman

+0

あなたのデータを別のクラスに入れることは、TestCaseDataSourceの使用方法とまったく同じです。多くの人がそれに慣れてきたのでテストクラスを使用する能力は維持されますが、私はそれが物を構成する最良の方法だとは思いません。 – Charlie

関連する問題