0

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

由于某些测试将涉及数据库访问,因此我们正在寻找一种工具或框架来促进在数据库中准备和清理测试数据的任务 - 就像 Java 世界中的 DbUnit(JUnit 扩展)一样。

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

4

3 回答 3

2

我会推荐提升单元测试。您可能必须使用设置和拆卸来手动清理数据库。当然,您可以在 ODBC 中构建自己的 C++ DbUnit。如果您确实让我知道,因为我也可以使用它!

于 2009-03-02T15:11:17.897 回答
0

我想你有自己的 C++ api 来使用 DB。如果是真的,你最好自己做所有的数据库准备。在这种情况下,您还将测试您的 DB API。

于 2009-03-02T12:39:50.130 回答
0

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

我们定义了一些宏,比如TS_DB_INSERT(filename)which callsystem("ant -Ddb.dataset=filename db.insert")之类的。

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

测试用例可能如下所示:

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

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}
于 2009-03-14T18:46:32.237 回答