2016-12-14 49 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