对于测试用例,我想要一个与 nUnit 的 Category 属性等效的函数。
我继承了大量的 C++ 测试用例,其中一些是单元测试,一些是运行时间较长的集成测试,我需要设置我的持续集成构建过程来忽略集成测试用例。
我宁愿简单地标记所有集成测试用例并指示 cppunit 在 CI 构建期间排除它们。
我是否忽略了 cppunit 的一个功能,还是有其他方法可以实现这一目标?
对于测试用例,我想要一个与 nUnit 的 Category 属性等效的函数。
我继承了大量的 C++ 测试用例,其中一些是单元测试,一些是运行时间较长的集成测试,我需要设置我的持续集成构建过程来忽略集成测试用例。
我宁愿简单地标记所有集成测试用例并指示 cppunit 在 CI 构建期间排除它们。
我是否忽略了 cppunit 的一个功能,还是有其他方法可以实现这一目标?
没有本机测试类别属性。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;
}
测试套件是测试用例的集合。TestRunner 执行一组 TestSuite。请注意,在此示例中,它从 TestFactoryRegistry 中获取 TestSuites,您通过使用对 CPPUNIT_TEST_SUITE_REGISTRATION(MyTestSuite) 的宏调用来填充它。但是 TestCases 仍然是您的测试类。
您当然可以自己实现这些属性,就像您使用外观扩展任何类一样。从 TestSuite 派生你的新类。将属性添加到您可以选择的测试中,然后填充您的 TestRunner 执行“仅单元测试”或“仅集成测试”或任何您想要的。
就此而言,TestRunner 可以根据名称选择要执行的测试。如果您使用 ITFoo、ITBar 等前缀命名所有集成测试,则可以选择所有以“IT”开头的测试。
有很多方法可以解决您的问题,但您必须自己解决。如果您可以编写值得单元测试的代码,那对您来说应该没什么大不了的。:-)