簡體   English   中英

NUnit 可以獨立運行基於 TestCaseSource 的測試嗎?

[英]Can NUnit run TestCaseSource based tests independently?

以下測試不會獨立運行,這會導致它們失敗。 在我們的例子中,我們需要用每個案例的相關數據填充一個數據庫。

有沒有辦法讓每個人都在“干凈”的裝置上運行?

[TestFixture]
public class TestSourceTest
{
    int _sum = 0;

    public class T
    {
        public int I { get; }

        public T(int i)
        {
            I = i;
        }

        public override string ToString()
        {
            return I.ToString();
        }
    }
    [TestCaseSource(nameof(TestCases))]
    public void Test(T t)
    {
        _sum += t.I;

        Assert.That(_sum, Is.EqualTo(t.I));
    }

    static IEnumerable<T> TestCases()
    {
        yield return new T(1);
        yield return new T(2);
        yield return new T(3);
    }
}

問題不在於TestCaseSource 在 NUnit 中,fixture 中的所有測試在歷史上都使用相同的 fixture 實例。 這可能是 NUnit 與大多數其他框架之間的最大區別,了解這一點很重要。

從 NUnit 3.13 開始,您已經能夠使用[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]覆蓋默認值並讓每個測試用例在單獨的實例中運行。 從那時起,這個新功能修復了許多錯誤,所以如果您想使用新屬性,您應該使用最新版本的 NUnit(撰寫本文時為 3.13.3)。

暫無
暫無

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

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