Как получить значение атрибута TestFixture

Я использую TestFixtures как контейнеры для моих тестов: Вот моя иерархия TestFixture (очевидно, это вымышленные имена):

  • ГлавнаяФункции1Тесты
  • ГлавнаяФункции2Тесты
  • ГлавнаяФункции3Тесты
  • Другое
    • Другое
    • Другое
    • Другое

В каждом из этих TestFixtures У меня есть множество тестов. Мы делимся этими тестами со своей командой, у каждого из нас разные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, это нам очень поможет! Спасибо

0 ответов

Другие вопросы по тегам