Вопрос

Мы разрабатываем на C ++ под Linux и собираемся настроить автоматизированные тесты.Мы намерены использовать платформу тестирования, такую как CppUnit или CxxTest.Мы используем Ant для создания программного обеспечения, и мы также будем использовать его для запуска тестов.

Поскольку некоторые тесты будут связаны с доступом к базе данных, мы ищем инструмент или фреймворк, который облегчает задачи подготовки и очистки тестовых данных в базе данных - точно так же, как DBUnit (расширение JUnit) в мире Java.

Другим вариантом может быть использование самого DBUnit - доступна виртуальная машина Java.Использование Ant-задачи DBUnit кажется наиболее многообещающим.Любые соответствующие отчеты с мест приветствуются!

Это было полезно?

Решение 3

Поскольку, похоже, не существует инструмента, подобного DBUnit, для разработки на C ++, мы создали собственный небольшой фреймворк.По сути, это адаптер для вызова реальных операций DBUnit из C / C ++ testrunners.В нем используются Муравьиные задачи предоставлено DBUnit.

Мы определили некоторые макросы, такие как TS_DB_INSERT(filename) какой звонок system("ant -Ddb.dataset=filename db.insert") и тому подобное.

В данном случае, db.insert является целью Ant, которая выполняет задачу DBUnit, выполняющую операцию ВСТАВКИ в базе данных.Тот Самый filename ссылается на набор данных XML, содержащий данные для вставки.Существует также макрос утверждения, который оборачивает DBUnit compare.

Тестовый пример может выглядеть следующим образом:

void testDatabaseStuff
{
    TS_DB_INSERT("input.xml");

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

Другие советы

Я бы порекомендовал модульное тестирование boost.Вероятно, вам придется использовать setup и teardown для ручной очистки базы данных.Конечно, вы могли бы создать свой собственный C ++ DBUnit в ODBC.ЕСЛИ вы это сделаете, дайте мне знать, потому что я тоже мог бы это использовать!

Я полагаю, у вас есть свой собственный C ++ api для работы с БД.Если это правда, вам лучше выполнить всю подготовку вашей базы данных самостоятельно.В этом случае вы также протестируете свой DB API.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top