我有一个测试,其目的是读取配置类中的CPP单元测试:我们可以调用这个类CppUnit的使用命令行参数
Config
的配置类有做
Config c;
c.read("/tmp/random-tmp-directory/test.conf");
的能力
random-temp-directory
由bash脚本创建,应传递到测试二进制文件中。
#!/bin/bash
TEMPDIR=$(mktemp)
cp files/config/test.conf $TEMPDIR/.
./testConfig $(mktemp)/test.conf
上面创建一个临时目录,拷贝我们的临时文件和经过的路径测试,因此它可以加载正确的文件。
有没有办法告诉CPPUNIT将命令行参数或任何参数发送到测试注册表?
这里是我的testConfig.cpp
#include <all the required.h>
CPPUNIT_TEST_SUITE_REGISTRATION(testConfig);
int main(int argc, char ** argv)
{
CPPUNIT_NS::TestResult testresult;
CPPUNIT_NS::TestRunner runner;
CPPUNIT_NS::TestFactoryRegistry ®istry = CPPUNIT_NS::TestFactoryRegistry::getRegistry();
// register listener for collecting the test-results
CPPUNIT_NS::TestResultCollector collectedresults;
testresult.addListener(&collectedresults);
runner.addTest(registry.makeTest());
runner.run(testresult);
// Print test in a compiler compatible format.
CppUnit::CompilerOutputter outputter(&collectedresults, std::cerr);
outputter.write();
return collectedresults.wasSuccessful() ? 0 : 1;
}
您如何知道要读取哪个文件?读取的文件作为参数传入。所以相同的代码可以在多个文件上运行。我通过使用静态变量来绕过它,这不是很漂亮,但它是它是什么 –
使用依赖注入。将文件名传递给配置文件命名方法的参数。输出应该是文件的完全限定名称。将名称传入文件阅读器。文件读取器的输出应该是一堆数据(可能是一个流)。将流传递到解析器,并获取配置信息。现在,您可以通过在测试代码中创建strstream来单元测试解析器,并且可以测试有关配置文件值的所有内容,而无需实际配置文件。你可以单元测试名称创建者,而不必打开一个实际的配置文件。 –
林不知道我跟着,您的答案可能是一个伪代码扩展? –