Nunit 为什么我会得到;OneTimeSetUp:未找到合适的构造函数…“;?

Nunit 为什么我会得到;OneTimeSetUp:未找到合适的构造函数…“;?,nunit,nunit-3.0,Nunit,Nunit 3.0,我正在使用NUnit3并试图在以下类层次结构中使用TestFixtureSource: public class AtataTestFixtureData { public static IEnumerable FixtureParams { get { yield return new TestFixtureData(new AtataConfigContainer

我正在使用NUnit3并试图在以下类层次结构中使用
TestFixtureSource

public class AtataTestFixtureData
{
    public static IEnumerable FixtureParams
    {
        get
        {
            yield return new TestFixtureData(new AtataConfigContainer
                                             {
                                                 AtataJsonConfig = new BaseAtataConfig()
                                             });
        }
    }
}

[TestFixtureSource(typeof(AtataConfigContainer), nameof(AtataTestFixtureData.FixtureParams))]
public class AtataTestsWithDbBase : OzCsTestsWithDbBase, IAtataAbpTests
{
    public AtataTestsWithDbBase()
    {

    }

    public AtataTestsWithDbBase(AtataConfigContainer aAtataConfigContainer)
    {
        AtataAbpTestsAdapter = AtataAbpTestsAdapter.Instance;
        AtataConfigContainer = aAtataConfigContainer;
    }
}

public class SomeSiteComAuTestsBase : AtataTestsWithDbBase
{
    public SomeSiteComAuTestsBase(AtataConfigContainer aAtataConfigContainer) : base(aAtataConfigContainer)
    {
    }
}

[TestFixture]
public class IndexTests : SomeSiteComAuTestsBase
{
    /// <summary>
    ///     Class constructor.
    /// </summary>
    public IndexTests(AtataConfigContainer aAtataConfigContainer) : base(aAtataConfigContainer)
    {
    }

    [Test]
    public void Get()
    {
        //Arrange

        //Act
        IndexPageObject indexPage = Go.To<IndexPageObject>();

        //Assert
    }
}   
公共类ATATestFixtureData
{
公共静态IEnumerable FixtureParams
{
得到
{
返回新的TestFixtureData(新的AtataConfigContainer
{
AtataJsonConfig=新的baseataconfig()
});
}
}
}
[TestFixtureSource(类型of(AtataConfigContainer),名称of(AtataTestFixtureData.FixtureParams))]
公共类atastatestswithdbase:ozcstestswithdbase、iaataabptests
{
公共atastatestswithdbase()
{
}
公共atastatestswithdbase(ataconfiggcontainer aAtataConfigContainer)
{
AtataAbpTestsAdapter=AtataAbpTestsAdapter.Instance;
AtataConfigContainer=AATATATConfigContainer;
}
}
公共类SomeSiteComautsBase:ATATESTSWITHDBASE
{
公共SomeSiteComautestbase(ataConfigContainer aatataconfigcContainer):基础(aatataconfigcContainer)
{
}
}
[测试夹具]
公共类索引扩展:SomeSiteComAuTestsBase
{
/// 
///类构造函数。
/// 
公共索引扩展(ataConfigContainer aatataconfigcContainer):基本(aatataconfigcContainer)
{
}
[测试]
公开作废获取()
{
//安排
//表演
IndexPageObject indexPage=Go.To();
//断言
}
}   
当我运行IndexTests.Get()时,我得到一个异常
OneTimeSetUp:没有找到合适的构造函数
,但是根据
public IndexTests(ataconfigcontainer aAtataConfigContainer):base(aAtataConfigContainer)
我有了所需的构造函数


我在这里遗漏了什么?

之所以出现此错误,是因为您的
IndexTests
类有一个接受参数的构造函数,但您的
TestFixtureSource
位于基类上。
TestFixtureSource
需要位于
IndexTests
上。
TestFixtureSource
属性未被继承。

谢谢。我很确定我试过了,但会确认的。是否有任何解决方法可以将源放在基础上?最终,测试本身是针对网站索引等中的每个页面的。因此,必须将其添加到子体而不是基,这会使TestFixtureSource“不太有用”(其配置数据),因为DRY将不得不不断被违反。将TestFixtureSource添加到子体是有效的。然而,有什么更好的方法可以做到这一点吗?见上文。