DbUnit for C ++?
-
03-07-2019 - |
题
我们正在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。
不隶属于 StackOverflow