簡體   English   中英

C# NUnit 即使使用 TestFixture 也找不到合適的構造函數

[英]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_1SalesTests按預期從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)
    {
        
    }
}

我通過簡單地將兩個基類( BaseTestsSalesTests )更改為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.

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