我想为测试用例的nUnit的Category属性提供一个等效函数。
我继承了大量的C ++测试用例,其中一些是单元测试,其中一些是长时间运行的集成测试,我需要建立我的持续集成构建过程来忽略集成测试用例。
我更愿意简单地标记所有集成测试用例,并指示cppunit在CI构建期间排除它们。
我是否忽略了cppunit的功能,还是有其他方法可以实现这一目标?
答案 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 ®istry = 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”开头的测试。
有许多方法可以解决您的问题,但您必须自己完成。如果你能编写值得单元测试的代码,那对你来说应该不是什么大问题。 : - )