Тестирование интеграции доступа к данным ... как вы это делаете? - PullRequest
0 голосов
/ 21 ноября 2008
public class RollBack : OnMethodBoundaryAspect // or another AOP for meth interception
{
    public override void OnEntry(MethodExecutionEventArgs eventArgs)
    {
        try
        {
            ServiceConfig cfg = new ServiceConfig();
            cfg.Transaction = TransactionOption.RequiresNew;
            cfg.TrackingAppName = "Application Unit Tests";
            cfg.TransactionDescription = "Application Unit Tests Transaction";
            cfg.TransactionTimeout = 0x2710;
            ServiceDomain.Enter(cfg);
        }
        catch (Exception exception)
        {
            Console.WriteLine("Could not enter into a new transaction:\n" + exception);
        }
    }

    public override void OnExit(MethodExecutionEventArgs eventArgs)
    {
        try
        {
            if (ContextUtil.IsInTransaction)
            {
                ContextUtil.SetAbort();
            }
            ServiceDomain.Leave();
        }
        catch (Exception exception)
        {
            Console.WriteLine("Could not leave an existing transaction:\n" + exception);
        }
    }
}

1 Ответ

0 голосов
/ 05 февраля 2013

Я вижу, что вы проводите тактическое тестирование транзакции для отката после тестирования.

Я лично начинаю с нуля и создаю таблицы для теста, а затем удаляю их. Другим распространенным методом является восстановление базы данных до известного состояния - хотя я хотел бы предположить, что это означает, что ваши тесты слишком широки, если они основаны на большом количестве состояний в базе данных.

Я писал об этом для PHP, но чаще работаю в .NET.

http://www.stevefenton.co.uk/Content/Blog/Date/201110/Blog/Database-Integration-Testing-With-Enhance-PHP/

...