2016-12-14 63 views
1

我正在嘗試使用N單元進行測試項目。我有一切工作,但現在我想知道是否有可能將測試用例分成完全獨立的類,或者唯一可行的方法是將數據推送到文件或部分類?基本上我希望在一個單獨的文件中的數據,而不是在一個文件中的所有數據和測試。或者可能是更多的標準,併爲每個規則測試創建不同的類。來自不同類別的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