我们正在Linux下用C ++开发并即将设置自动化测试。我们打算使用像CppUnit或CxxTest这样的测试框架。我们正在使用Ant构建软件,我们也将使用它来运行测试。

由于某些测试涉及数据库访问,我们正在寻找一种工具或框架,它有助于准备和清理数据库中的测试数据 - 就像Java世界中的DbUnit(JUnit扩展)一样。 / p>

另一种选择可能是使用实际的DbUnit - Java VM可用。利用DbUnit的Ant任务似乎是最有希望的。欢迎任何相关的现场报告!

有帮助吗?

解决方案 3

由于似乎没有类似DbUnit的C ++开发工具,我们已经构建了一个自己的小框架。基本上它是一个用于从C / C ++ testrunners中调用实际DbUnit操作的适配器。它利用了DbUnit提供的 Ant任务

我们定义了一些宏,如 TS_DB_INSERT(filename),它们调用 system(“ant -Ddb.dataset = filename db.insert”)等。

在这种情况下, db.insert 是一个Ant目标,它执行对数据库执行INSERT操作的DbUnit任务。 filename 引用包含要插入的数据的XML数据集。 还有一个断言宏,它包装了一个DbUnit compare

测试用例可能如下所示:

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

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

其他提示

我建议增强装置测试。您可能必须使用安装和拆卸来手动清理数据库。当然,您可以在ODBC中构建自己的C ++ DbUnit。如果你确实让我知道,因为我也可以使用它!

我想你有自己的C ++ api可以使用DB。 如果确实如此,您最好自己做所有数据库准备工作。在这种情况下,您也将测试您的数据库API。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top