Как получить значение атрибута TestFixture
Я использую TestFixture
s как контейнеры для моих тестов: Вот моя иерархия TestFixture (очевидно, это вымышленные имена):
- ГлавнаяФункции1Тесты
- ГлавнаяФункции2Тесты
- ГлавнаяФункции3Тесты
- Другое
- Другое
- Другое
- Другое
В каждом из этих TestFixture
s У меня есть множество тестов. Мы делимся этими тестами со своей командой, у каждого из нас разныеTestFixture
поддерживать. Хочу отметить "владельца" тестов.
Я создал настраиваемый атрибут, унаследованный от PropertyAttribute
:
[AttributeUsage(System.AttributeTargets.Class, Inherited = true)]
public class TestOwner : PropertyAttribute
{
public TestOwner(Owner name) : base(nameof(TestOwner), name.ToString()) {}
}
И Owner
перечисление:
public enum Owner { Owner1, Owner2, Owner3, Owner4 }
Таким образом я могу добавить этот атрибут в свой TestFixture:
[TestFixture, TestOwner(Owner.Owner1)]
public class MainFeatures1Tests : TestBase
{
[...]
[TestFixture, TestOwner(Owner.Owner2)]
public class OtherFeatures1Tests : OtherFeaturesTests
{
[...]
OtherFeaturesTests
также наследуя TestBase
. TestBase
сам является абстрактным классом с TestFixture
атрибут.
В конце концов, я отправляю свои результаты в базу данных в TearDown
в конце моего TestBase
учебный класс. Я бы хотел добавитьOwner
к нему. Вот что я пытался получить значение атрибута:
//My issue with this line is this "TestClass" which I don't know because I'm in the TearDown of the parent class
var owner = ((TestOwnerAttribute)Attribute.GetCustomAttribute(TestClass ?? throw new InvalidOperationException(), typeof(TestOwnerAttribute))).Properties[nameof(TestOwner)];
//This one I don't think its purpose is to do what I want, but I tried
var owner = TestContext.Parameters[nameof(TestOwner)];
//Eventually, this gets the attribute of the `Test`, not from the `TestFixture`...
var owner = TestContext.CurrentContext.Test.Properties[nameof(TestOwner)];
Я знаю, что могу добавить Method
использование атрибута на моем TestOwner
атрибут, но так я должен был бы отмечать каждый тест егоOwner
, что составляет сотни тестов наTestFixture
.
Я пытался прочитать несколько источников и не понял, есть ли способ это сделать.
Если у кого-то есть решение, которое поможет нам получить значение атрибута TestFixture
, это нам очень поможет! Спасибо