[英]C# NUnit No suitable constructor found even when using TestFixture
我在 C# 中使用 NUnit 來做一些單元測試。 我有這個類繼承結構:
[TestFixture(null)]
public abstract class BaseTests
{
protected BaseTests(StatusesEnum? status)
{
}
[Test]
public abstract void TestMethod_1();
}
[TestFixture(null)]
public class SalesTests : BaseTests
{
protected SalesTests(StatusesEnum? status) : base(status)
{
}
//When I run this test from this class it throws the "No suitable constructor was found"
[Test]
public override void TestMethod_1()
{
}
}
//When I run the test from this class it works perfectly since it passes value to the constructor
public class CustomerTests : SalesTests
{
public CustomerTests() : base (StatusesEnum.New) { }
}
當我運行CustomerTests
它們運行TestMEthos_1
, SalesTests
按預期從SalesTests
調用TestMEthos_1
。
但是,當我只運行SalesTests
類時,我不斷收到No suitable constructor found
的異常。 預期的結果應該是status
參數將為空並且測試應該通過,因為我正在測試方法中檢查該參數。
我發現很多答案都說只需添加[TestFixture]
屬性,但這也無濟於事。 所以任何關於如何解決這個問題的想法都會很棒。
似乎NUnit
要求構造函數是公共的。 下一個設置對我SalesTests
(更改了SalesTests
ctor 可訪問性修飾符並將TestFixtureAttribute
添加到CustomerTests
):
[TestFixture(null)]
public class SalesTests : BaseHfsTests
{
public SalesTests(StatusesEnum? status) : base(status)
{
}
[Test]
public override void TestMethod_1()
{
}
}
[TestFixture]
public class CustomerTests : SalesTests
{
public CustomerTests() : base(StatusesEnum.New)
{
}
}
我通過簡單地將兩個基類( BaseTests
和SalesTests
)更改為abstract
來解決它,因為abstract class
本身不運行測試,只有繼承類運行它們的測試。
public abstract class BaseTests
{
protected BaseTests(StatusesEnum? status)
{
}
[Test]
public abstract void TestMethod_1();
}
public abstract class SalesTests : BaseTests
{
protected SalesTests(StatusesEnum? status) : base(status)
{
}
[Test]
public override void TestMethod_1()
{
}
}
public class CustomerTests : SalesTests
{
public CustomerTests() : base (StatusesEnum.New) { }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.