簡體   English   中英

來自不同類的NUnit DataSource

[英]NUnit DataSource from a different class

我正在嘗試使用N Unit進行測試項目。 我現在一切正常,但是我想知道是否有可能將測試用例拆分為一個完全獨立的類,還是唯一可行的方法是將數據推送到文件或部分類中? 基本上,我希望將數據放在一個單獨的文件中,而不是將所有數據和測試都放在一個文件中。 或更多的標准,並為每個規則測試創建不同的類。

[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 = "" };
    }

我相信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 = "" });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM