Как получить доступ к состоянию тестового класса из пользовательского атрибута IApplyToTest?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить доступ к состоянию тестового класса из пользовательского атрибута IApplyToTest?

Сообщение Anonymous »

У меня есть тестовый класс с TestFixtureSource с двумя значениями: «Unit» и «Integration». Эти значения являются значениями режима. На основе этого режима класс устанавливает зависимости как макеты или реальные реализации. Некоторые классовые тесты актуальны для обоих режимов, другие актуальны только для одного из них. Я пытаюсь найти способ пропустить или игнорировать некоторые тесты в зависимости от значения режима. Итак, я хочу сделать что-то вроде следующего

Код: Выделить всё

[TestFixtureSource(nameof(UnitOrIntegration))]
class Tests(string Mode)
{
[SetUp]
void Setup()
{
if (Mode == "Unit") { ... }
if (Mode == "Integration") { ... }
}

[Test] //actual for both modes
void Test1() { ... }

[Test][WhenModeIs("Unit")]
void Test2() { ... }

[Test][WhenModeIs("Integration")]
void Test3() { ... }
}

Я нашел кое-что, что может помочь

Код: Выделить всё

    [AttributeUsage(
AttributeTargets.Method,
AllowMultiple = false,
Inherited = false)]
public class WhenModeIsAttribute(string Mode)
: NUnitAttribute, IApplyToTest
{
public void ApplyToTest(Test test)
{
if (/* I need check mode here */)
{
test.RunState = RunState.Ignored;
test.Properties.Set(
PropertyNames.SkipReason,
$"It is not actual for {Mode}");
}
}
}
Но я не могу найти способ получить доступ к значению режима. Как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -attribute
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»