[英]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.