Я создал специальный тест DataUttribute для теории xUnit с именем RoleAttribute
:
public class RoleAttribute : DataAttribute
{
public Role Role { get; set; }
public RoleAttribute(Role role, Action<Role> method)
{
Role = role;
AuthRepository.Login(role);
method(role);
}
public override IEnumerable<object[]> GetData(MethodInfo testMethod)
{
return new[] { new object[] { Role } };
}
}
И у меня есть метод теста OpenProfilePageTest
:
public class ProfileTest : AuthTest
{
[Theory, Priority(0)]
[Role(Enums.Role.SuperUser, OpenProfilePageTest)]
[Role(Enums.Role.Editor, OpenProfilePageTest)]
public void OpenProfilePageTest(Enums.Role role)
{
var profile = GetPage<ProfilePage>();
profile.GoTo();
profile.IsAt();
}
}
То, что я хочу, этодля каждой роли (атрибута) он сначала выполняется:
AuthRepository.Login(role);
(конструктор RoleAttribute
)
, а затем возобновляет работу с кодом внутри метода OpenProfilePageTest()
. Прежде чем он повторяет то же самое, но для второго атрибута.
Как я могу это сделать, сейчас я пытаюсь сделать это, передав метод OpenProfilePageTest()
внутри атрибута и выполнив его в своем конструкторе. Должен быть лучший способ сделать это, чем обходить метод, которому я верю?