Я пишу модульные тесты на C # с использованием XUnit и пытаюсь создать подкласс SkippableFactAttribute для создания нового атрибута MySkippableFactAttribute
, который устанавливает переменную экземпляра родительского класса Skip
, в результате чего тест пропускается,Вот объявление атрибута:
public class MySkippableFactAttribute : SkippableFactAttribute
{
public MySkippableFactAttribute()
{
this.Skip = "Skip this for now";
}
}
Вот используемый атрибут:
[MySkippableFactAttribute]
public void TestMethod()
{ }
А вот тестовый вывод, где TestMethod
правильно пропущен:
Теперь я попытаюсь добавить параметр в конструктор, и вы увидите, что модульный тест xUnit перестает отвечать на запросы.Вот модифицированный конструктор:
public class MySkippableFactAttribute : SkippableFactAttribute
{
public MySkippableFactAttribute(string parameterDummy)
{
this.Skip = "Skip this for now";
}
}
И использование атрибута теперь меняется:
[MySkippableFactAttribute("this is a proof of concept")]
public void TestMethod()
{ }
И хотя я могу пересобрать проект и щелкнуть, чтобы запустить этот модульный тест много раз,тест выглядит так, как будто его еще не запускали.Я даже могу установить точку останова в конструкторе и увидеть, что parameterDummy
правильно установлено на «это доказательство концепции»:
Это ошибка Visual Studio?Как простое добавление атрибута конструктора может заставить весь тест выглядеть так, как будто он никогда не запускался?Как я могу успешно использовать параметр в конструкторе и при этом показывать тест как пропущенный?