Как известно, в xUnit-фреймворках, простейший test-case состоит из последовательности вызовов SetUp, TestSomething, TearDown. И довольно часто в unit-тестировании требуется подготовить какие-то ресурсы перед основными тестами. Типичный пример этого — соединение с базой данных. И логика подсказывает нам, что было бы весьма затратно, запуская несколько тестов, перед каждым устанавливать соединение с БД в SetUp, и отключаться в TearDown.
...
type
TTestDB1 = class(TTestCase)
protected
public
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestDB1_1;
procedure TestDB1_2;
end;
...
implementation
...
procedure TTestDB1.SetUp;
begin
inherited;
// connect to DB
end;
procedure TTestDB1.TearDown;
begin
// disconnect from DB
inherited;
end;
...
initialization
RegisterTest(TTestDB1.Suite);
end.
Схема вызовов будет такая:
-- TTestDB1.SetUp
---- TTestDB1.TestDB1_1
-- TTestDB1.TearDown
-- TTestDB1.SetUp
---- TTestDB1.TestDB1_2
-- TTestDB1.TearDown
_К тому же с БД может статься, что перед тем, как к БД подключиться, её нужно создать с требуемой структурой._ Для решения такой задачи в [dUnit][1] есть класс TTestSetup (описан в модуле TTestExtensions). [Читать дальше →][2]
[1]:
http://dunit.sourceforge.net/
[2]:
http://habrahabr.ru/post/266487/#habracut