我加入了一个项目,其中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说以下内容:
将属性添加到测试套件构建器上下文
我不确定预期的用途或目的是什么,尽管它 出现 就像它可能对分享常见信息等有用。我不知道请参阅其使用示例。
有什么价值,是否有一些例子可以指向我?
答案 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)。