Почему я получаю "OneTimeSetUp: не найдено подходящего конструктора ..."? - PullRequest
1 голос
/ 14 июня 2019

Я использую 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
    }
}   

Когда я запускаю IndexTests.Get (), я получаю исключение OneTimeSetUp: No suitable constructor was found, но согласно public IndexTests(AtataConfigContainer aAtataConfigContainer) : base(aAtataConfigContainer) у меня есть нужный конструктор.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 15 июня 2019

Вы получаете эту ошибку, потому что ваш класс IndexTests имеет конструктор, который принимает параметры, но ваш TestFixtureSource находится в базовом классе. TestFixtureSource должен быть на вашем IndexTests. Атрибут TestFixtureSource не наследуется.

...