[#] [Из песочницы] Как организовать тестирование БД в dUnit
habrabot(difrex,1) — All
2015-09-09 16:30:03


Как известно, в 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