У меня есть старый MBUnit код, который выглядит следующим образом:Может ли TestActionAttribute в NUnit запустить BeforeTest до собственного метода SetUp прибора?
public class MyFixture {
[SetUp]
public void SetUp() {
// Add data to database
}
[Test, Rollback]
public void DoTest() {
// Tests with the data
}
}
Мой новый атрибут NUnit Откат выглядит как это:
public class RollbackAttribute : TestActionAttribute
{
public override void BeforeTest(TestDetails testDetails)
{
// Begin transaction
}
public override void AfterTest(TestDetails testDetails)
{
// Abort transaction
}
}
Откат должен откатить новые данные, добавленные в SetUp метод, а также любые модификации во время самого теста. К сожалению, кажется, что PreTest от NUnit работает после метода SetUp прибора, поэтому данные, добавленные во время SetUp, не откат.
Есть ли способ запустить BeforeTest до SetUp?
Один из вариантов будет базовым классом и заменит существующие атрибуты Rollback дополнительным кодом в SetUp и TearDown, однако некоторые из моих тестов требуют выполнения вне транзакции (они создают несколько транзакций сами во время тестового прогона), поэтому добавление транзакции вокруг всех тестовых случаев потребуют немного внимания. Я бы предпочел найти решение, которое может повторно использовать существующие атрибуты Rollback.
Да, я думаю, что первоначальная реализация, которую я рефакторинг, была немного обратной - метод SetUp для каждой привязки не должен полагаться на атрибут per-test, чтобы убедиться, что его состояние очищено правильно, поэтому оно полностью разумно изменить это. – Douglas
Нет аффилиации.Я буду награждать щедрость после того, как закончу свой собственный материал и сделаю вывод, что этот ответ работает на меня. – Puppy
@Puppy ах, я вижу, спасибо, я думал, вы двое - сотрудники. –