对于测试用例,是否有一个等同于nunit的Category属性的cppunit?

时间:2011-10-10 18:44:49

标签: cppunit

我想为测试用例的nUnit的Category属性提供一个等效函数。

我继承了大量的C ++测试用例,其中一些是单元测试,其中一些是长时间运行的集成测试,我需要建立我的持续集成构建过程来忽略集成测试用例。

我更愿意简单地标记所有集成测试用例,并指示cppunit在CI构建期间排除它们。

我是否忽略了cppunit的功能,还是有其他方法可以实现这一目标?

1 个答案:

答案 0 :(得分:4)

没有原生测试类别属性。 CppUnit比这简单一点。 CppUnit甚至没有为您的应用程序提供命令行测试运行器。您必须编写自己的简单main()函数来执行TestRunner。

这是规范的例子。

#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>

int main( int argc, char **argv)
{
  CppUnit::TextUi::TestRunner runner;
  CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
  runner.addTest( registry.makeTest() );
  bool wasSuccessful = runner.run( "", false );
  return wasSuccessful;
}

TestSuite是TestCases的集合。 TestRunner执行TestSuite的集合。请注意,在此示例中,它从TestFactoryRegistry获取TestSuites,您可以使用对CPPUNIT_TEST_SUITE_REGISTRATION(MyTestSuite)的宏调用来填充TestSuite。但TestCase仍然是你的测试类。

您当然可以自己实现这些属性,就像扩展任何具有外观的类一样。从TestSuite中派生您的新类。向您可以选择的测试添加属性,然后填充TestRunner执行“只是单元测试”或“只是集成测试”或任何你想要的。

就此而言,TestRunner可以根据名称选择要执行的测试。如果您使用ITFoo,ITBar等前缀命名所有集成测试,则可以选择所有以“IT”开头的测试。

有许多方法可以解决您的问题,但您必须自己完成。如果你能编写值得单元测试的代码,那对你来说应该不是什么大问题。 : - )