在CPPUnit中使用测试套件属性的示例是什么? (CPPUNIT_TEST_SUITE_PROPERTY)

时间:2017-02-01 17:35:06

标签: c++ unit-testing cppunit

我加入了一个项目,其中CPPUnit用于单元测试,并将添加一些可能共享设置和拆除代码的测试。在研究这个问题时,我遇到了

CPPUNIT_TEST_SUITE_PROPERTY

(来自https://people.freedesktop.org/~mmohrhard/cppunit/group___writing_test_fixture.html

其描述说

  

将属性添加到测试套件构建器上下文。

http://cppunit.sourceforge.net/doc/cvs/group___writing_test_fixture.html说以下内容:

  

将属性添加到测试套件构建器上下文

我不确定预期的用途或目的是什么,尽管它 出现 就像它可能对分享常见信息等有用。我不知道请参阅其使用示例。

有什么价值,是否有一些例子可以指向我?

1 个答案:

答案 0 :(得分:4)

根据this piece of code,看起来您应该能够在创建测试套件时在某个时刻检索属性,以将其作为参数传递给特定测试。

也许目标是允许你这样做:

#define CPPUNIT_TEST_WITH_PARAM(testMethod,param) \
    CPPUNIT_TEST_ADD( new CppUnit::ParameterizedTestCase<ThisTestFixtureType>( \
                                        context.getTestNameFor( #testMethod ), \
                                        #testMethod, \
                                        &TestFixtureType::testMethod, \
                                        context.makeFixture(), \
                                        context.getStringProperty( param ) ) )

CPPUNIT_TEST_SUITE( MyTestSuite);
CPPUNIT_TEST_SUITE_PROPERTY( "param1", "foo" )
CPPUNIT_TEST_SUITE_PROPERTY( "param2", "bar" )
CPPUNIT_CPPUNIT_TEST_WITH_PARAM( func, "param1" )
CPPUNIT_CPPUNIT_TEST_WITH_PARAM( func, "param2" )
CPPUNIT_TEST_SUITE_END();

void func( const std::string& param ); 

这会结束调用func("foo")func("bar")。哪个会很好,因为它可以添加字符串参数化测试。

然而,这只是一次猜测,因为ParameterizedTestCase不是1.12.1旧版本的一部分,也不是recent releases的一部分(所以CPPUNIT_TEST_ADD宏),我相信这显然是在发布计划中但已中止,宏CPPUNIT_TEST_SUITE_PROPERTY在这里仍然无用。 getStringProperty也存在,我发现它无法正常使用。

总而言之,这看起来像一个破碎的东西,无论如何显然不是为了共享设置/拆卸代码,而是更多的参与测试(实际上可以通过模板完成,请参阅this post)。