2013-02-24 4 views
3

Часто бывает, что вам нужно выполнить какую-то очистку после каждого теста. Например, очистка базы данных.Глобальные функции настройки и разблокировки

ВОПРОС:

Есть ли способ, чтобы прикрепить глобальную Teardown и отладочные функции при использовании UnitTest библиотеки? Было бы еще лучше, чтобы быть в состоянии определить вокруг советы:

unittest.around((test){ 
    //doing setup 
    test(); 
    //doing cleanup 
}); 
+1

Не похоже. Вот что сказал Грам: http://code.google.com/p/dart/issues/detail?id=8157 Запросить файл-запрос? –

+0

Спасибо Сет. Я подал запрос. –

ответ

1

Конечно, ошибка должна сначала устанавливайте :-)

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

Если вы хотите сделать тест ванной установки/демонтаж, вы могли бы сделать это с начальным/финальным «тестом» в группе:

group('test suite',() { 
    test('Set up suite',() { ... }); 
    test('Test 1',() { ... }); 
    ... 
    test('Test n',() { ... }); 
    test('Tear down suite',() { ... }); 
}); 

Это не идеальное, но это решение.

Стоит отметить, что внутри группы фактически не представлены как иерархия. Все, что мы действительно делаем, это держать стек с текущими функциями setUp/tearDown, поэтому мы можем связать каждый тестовый пример с соответствующими и конкатенировать имена групп и имя теста, чтобы сделать окончательное имя для тестового примера. Мы не строим структуру древовидных данных, поэтому у нас нет хорошего способа делать upcalls неявно (мы могли бы создавать замыкания «на лету», которые повышали бы один уровень, и использовать их как фактические функции setUp/tearDown, но это немного Fugly).

1

Вы можете сделать это вручную, как грамотрицательные ссылается на ошибку:

main() { 
    topSetup() { 
    // ... 
    } 
    setUp(topSetup); 

    group('group',() { 
    setUp(() { 
     topSetup(); 
     // ... 
    }); 

    test('test',() { 
     // ... 
    }); 
    }); 
} 
Смежные вопросы