gpt4 book ai didi

c++ - CPPUNIT:如何使用其名称创建 TestFixture 的实例

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:56 33 4
gpt4 key购买 nike

我有两个名为“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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com