CPPUnit 中使用的测试套件 属性 有哪些示例? (CPPUNIT_TEST_SUITE_PROPERTY)
What are examples of test suite property uses in CPPUnit? (CPPUNIT_TEST_SUITE_PROPERTY)
我加入了一个使用 CPPUnit 进行单元测试的项目,并将添加一些可能共享设置和拆卸代码的测试。在对此进行更多研究时,我遇到了
CPPUNIT_TEST_SUITE_PROPERTY
(来自 https://people.freedesktop.org/~mmohrhard/cppunit/group___writing_test_fixture.html)
它的描述是
Adds a property to the test suite builder context.
http://cppunit.sourceforge.net/doc/cvs/group___writing_test_fixture.html 表示如下:
Adds a property to the test suite builder context
我不确定它的预期用途或目的是什么,尽管它 看起来 好像它可能对共享有用公共信息等。我没有看到它的使用示例。
这有什么价值,有什么例子可以给我参考吗?
根据 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 旧版本的一部分,也不是更多 [=18] 的一部分=](CPPUNIT_TEST_ADD
宏也是如此),我相信这显然是发布计划中的内容,但已中止,宏 CPPUNIT_TEST_SUITE_PROPERTY
在这里仍然无用。 getStringProperty
也还在,我发现没办法正常使用。
总而言之,这看起来像是一个破烂的东西,无论如何显然不是为了共享 setup/teardown 代码,而是为了进行参数化测试(实际上可以通过模板完成,参见 ).
我加入了一个使用 CPPUnit 进行单元测试的项目,并将添加一些可能共享设置和拆卸代码的测试。在对此进行更多研究时,我遇到了
CPPUNIT_TEST_SUITE_PROPERTY
(来自 https://people.freedesktop.org/~mmohrhard/cppunit/group___writing_test_fixture.html)
它的描述是
Adds a property to the test suite builder context.
http://cppunit.sourceforge.net/doc/cvs/group___writing_test_fixture.html 表示如下:
Adds a property to the test suite builder context
我不确定它的预期用途或目的是什么,尽管它 看起来 好像它可能对共享有用公共信息等。我没有看到它的使用示例。
这有什么价值,有什么例子可以给我参考吗?
根据 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 旧版本的一部分,也不是更多 [=18] 的一部分=](CPPUNIT_TEST_ADD
宏也是如此),我相信这显然是发布计划中的内容,但已中止,宏 CPPUNIT_TEST_SUITE_PROPERTY
在这里仍然无用。 getStringProperty
也还在,我发现没办法正常使用。
总而言之,这看起来像是一个破烂的东西,无论如何显然不是为了共享 setup/teardown 代码,而是为了进行参数化测试(实际上可以通过模板完成,参见