我有一个visual studio项目,其中包含一个模块的CppUnit测试用例。构建此项目时会创建一个dll(像ModuleUnitTest.dll这样的东西)。我不知道如何运行这些测试? CppUnit中是否有可用于读取此dll并运行测试的现成存根?或者我必须自己写?由于这些单元测试用例很长时间没有,并且没有存根代码,我相信我不需要写一个。有人可以告诉我如何从dll执行测试?
答案 0 :(得分:0)
在测试代码中的某个地方,您需要一个测试运行器。标准答案是创建一个像CppUnitTestMain.cpp这样的文件并添加类似这样的代码(直接来自cppunit文档):
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
int main( int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest( registry.makeTest() );
bool wasSuccessful = runner.run( "", false );
return wasSuccessful;
}
因为如果这是一个单独编译的项目,TestRegistry信息不可用,我想你最终会使用LoadLibrary进行一些编码来引入DLL,然后从中获取信息以添加到测试运行器。并非不可能,但是你需要自己解决这个问题。
但是手动处理测试注册表是宏应该为您轻松处理的额外工作。这导致了我要问的更大的问题,这就是为什么你的测试目前存放在DLL项目中?如果他们没有被执行,你在做什么?是否有其他可执行文件加载并运行它们可以利用它们?
我们通常使用的答案是让测试项目本身是可执行文件,而不是DLL,并包含所有测试代码。它通过链接器附加依赖项设置静态链接业务逻辑:$(SolutionDir)businessProject \ debug \ obj * .OBJ文件,在解决方案中,我们在正在构建的主要businessProject代码上添加项目依赖项。
答案 1 :(得分:0)
Youse 测试资源管理器 Visual Studio的浮动面板。