Nunit 为什么我会得到;OneTimeSetUp:未找到合适的构造函数…“;?
我正在使用NUnit3并试图在以下类层次结构中使用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
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添加到子体是有效的。然而,有什么更好的方法可以做到这一点吗?见上文。