Код: Выделить всё
using FluentAssertions;
using NUnit.Framework;
public class SystemUnderTest
{
public bool? CrucialSettingsForSut { get; }
public SystemUnderTest(bool crucialSettingsForSut)
{
// does something with crucialSettingsForSut that inherit changes the logic, this is just an example
this.CrucialSettingsForSut = crucialSettingsForSut;
}
}
public class ConstructorTest
{
public class BaseTestClass
{
protected readonly SystemUnderTest sut;
public BaseTestClass(bool crucialSettingsForSut)
{
this.sut = new SystemUnderTest(crucialSettingsForSut);
}
[Test]
public void TestApplicableToBothCases()
{
this.sut.CrucialSettingsForSut.Should().NotBeNull();
}
}
[TestFixture]
public class ActualTestFixtureFalse : BaseTestClass
{
public ActualTestFixtureFalse() : base(false) { }
[Test]
public void TestOnlyApplyingToFalse()
{
this.sut.CrucialSettingsForSut.Should().BeFalse();
}
}
[TestFixture]
public class ActualTestFixtureTrue : BaseTestClass
{
public ActualTestFixtureTrue() : base(true) { }
[Test]
public void TestOnlyApplyingToTrue()
{
this.sut.CrucialSettingsForSut.Should().BeTrue();
}
}
}
Важно то, что TestonlyApplyingTotrue и testonlyApplyingTofalse < /code> - противоречивые , то есть я не могу поместить их в один и тот же класс и пройти оба теста в тестовой области с параметрами для конструктора.
< H2> Проблема
К сожалению, NUNIT пытается создать экземпляр BASETESTCLASS , хотя я на самом деле не хочу этого. В конце концов, это просто содержит набор «базовых тестов»:
Это приводит к этой ошибке для testapplicabletobothcases :
Код: Выделить всё
OneTimeSetUp: No suitable constructor was found
Exception doesn't have a stacktrace
-----
No suitable constructor was found
Exception doesn't have a stacktrace
Я не видел, чтобы в тестах NUNIT не было обнаружено, но в моем случае BasetestClass и имеет цель, как объяснено. Я не могу решить это с помощью TestFixture .
В качестве альтернативы может быть пользовательская assert.ignore в testonlyapplyingtotru запускается, если запускается соответствующий другой тестовый пример, но это Imho Ugly Code Design и вызывает запись «игнорируемого теста».
с наследием, которое я использовал здесь, имеет гораздо больше смысла.
Также, очевидно Вряд ли масштабируется, поскольку у меня не есть только один тест для каждого сценария, как в этом упрощенном примере. элегантный способ?
Подробнее здесь: https://stackoverflow.com/questions/794 ... sis-for-pa