我有两个名为“ TT_Common ”和“ TT_Container ”的测试类,它们扩展了CPPUNIT_NS::TestFixture:
class TT_Common : public CPPUNIT_NS::TestFixture ......
class TT_Container : public CPPUNIT_NS::TestFixture ......
还有一个称为TT_Runner的注释器类,它扩展了CPPUNIT_NS::TestRunner:
class TT_Runner : public CPPUNIT_NS::TestRunner
{
.....
void run( CPPUNIT_NS::TestResult &controller, const std::string &testPath )
{
CPPUNIT_NS::TestPath path = m_suite->resolveTestPath( testPath );
CPPUNIT_NS::Test *testToRun = path.getChildTest();
for ( size_t iIdx = 0; iIdx < testToRun->getChildTestCount(); iIdx++ )
{
CPPUNIT_NS::Test* psTest = testToRun->getChildTestAt(iIdx);
std::string testName = psTest->getName();
// testName is TT_Common for iIdx = 0 and TT_Container for iIdx = 1
}
}
我已经有了TestFixture 的名称,但是如何创建它的 Instace ?我找不到接受名称并返回实例的工厂或注册表。
最佳答案
这不是固定装置的工作方式,也不是测试的工作方式。分别为每个测试实例化一个夹具,因此测试是隔离的。并且测试以未指定的顺序运行,因此它们不得相互依赖。
通常,当您具有相互依赖的功能时,只有一个较长的测试用例可以将它们全部调用。如果您还有其他需要,您真的必须在cppunit之外手动进行。
关于c++ - CPPUNIT:如何使用其名称创建TestFixture实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8999790/