2011-02-08 31 views
1

在CPP单元中,我们将单元测试作为构建的一部分作为构建后设置的一部分。作为其中的一部分,我们将运行多个测试。如果任何测试用例失败,构建不应该停止,它应该继续并运行所有测试用例,并应报告汇总了多少测试用例通过和失败。我们如何才能做到这一点。C++的CPP单元设置

谢谢!

+2

请提供有关您的设置的更多详细信息。你的问题太泛泛,无法得到有用的答案。你已经决定了你想要哪个单元测试库(boost.test,unittest ++,cppunit,...)吗?你使用什么构建工具?你在什么环境下运行它(由开发人员手动或持续集成)?你想/所有的测试或多个单一的可执行文件? – 2011-02-08 09:06:30

回答

0

你的问题太模糊了一个确切的答案。通常,单元测试引擎会返回一个代码来告诉它已经失败(就像linux上shell中的非零返回代码)或者生成一些结果输出文件。调用系统处理这个。如果你已经写了它(一些自制的脚本),你必须提供选项,即使发生错误也要继续执行测试。如果您使用持续集成服务器等工具,则必须通过文档并找到允许您在测试失败时继续的选项。

一种解决方法是编写即使单元测试失败返回一个“OK”的结果的脚本,但你失去了一些自动验证...

更具体的,如果你想要更多的线索。

MY2C

0

我只想写你的测试这种方式。而不是使用CPPUNIT_ASSERT宏,或者使用常规C++编写的任何方式记录错误。

当然你也可以使用宏。喜欢的东西:

LOGASSERT(some_expression)

可以被定义为执行some_expression如果失败与FILELINE一起登录的表达,也可以登录过程中的异常,以及那些不会抛出,只需将它们写入测试中(如果要记录导致它们的表达式,则使用宏)。FILELINE)。

如果您正在编写宏,我会建议您将宏的内容限制为使用额外参数调用内联函数。

+0

我会推荐这个。使用提供给您的宏。如果一个单元失败,该测试应该退出并返回到呼叫环境。但是您的呼叫环境可能会选择打印关于失败的消息,然后继续调用下一个测试。 – 2011-02-08 10:34:48

1

他的问题很具体。你需要一个测试跑步者。将每个测试封装在自己的行为和类中。测试项目与测试代码分开包含。之后,只需配置您的XMLOutputter。你可以在linux网站上找到一个很好的例子。 http://www.yolinux.com/TUTORIALS/CppUnit.html

我们用这种方式编译我们的主要项目的测试项目,并观察一切是否正常。现在,这一切都成为维护您的测试代码的工作。