开始Code :: blocks和UnitTest ++

Mar*_*tti 8 c++ unit-testing codeblocks

我即将开始一个C++项目,但我仍然坚持基础.

我想使用(linux)Code :: Blocks IDE,并且很容易创建一个普通的项目.但是我想使用UnitTest ++框架进行TDD,我不知道如何干净地设置所有内容.

我已经问过一个关于把命令放在哪里的问题UnitTest::RunAllTests(),他们告诉我最好的地方是main()一个单独的程序.

我如何在Code :: Blocks中执行此操作?我想我需要创建2个项目:

  • 具有自己的"真实"项目main();
  • 包含测试和单元测试的项目main()UnitTest::RunAllTests()内.

然后以某种方式构建第一个项目并在构建过程中运行第二个项目.我不知道该怎么做,但我可以自己找出来.

我的问题是:

  1. 这是正确的方法吗?
  2. 我是否还必须为UnitTest ++框架创建一个项目,以便让其他人在其他平台上构建它?或者正在删除项目路径中的编译库?
  3. 我该如何组织这些项目的目录?将与每个包相关的测试放在与该包相同的目录中会很好,但是可以在同一目录树中放置多个项目吗?

Mar*_*tti 5

我会部分回答我自己的问题,因为我已经设法让一切正常。

  1. 按照官方文档页面上的说明,我将带有编译库和所有源文件的 UnitTest++ 文件夹放在我的项目路径中。
  2. 然后我为所有单元测试创​​建了一个测试项目,其中一个包含著名的UnitTest::RunAllTests(). 我$exe_output在这里放置了一个构建后过程,以便在每次构建这个项目时自动执行测试。
  3. 我创建了“真正的”项目,我要测试的代码将在其中运行。在构建设置中我将测试项目指定为真实项目的依赖,这样每次构建真实项目时,也会先构建测试项目。

通过这些设置,我可以处理我的测试和真实代码,我只需要构建真实的代码即可执行更新的测试。任何失败的测试也会使构建失败。

现在还有两个问题:“这是最好的方法吗?” 和“现在每个项目都位于不同的目录中。保持这种方式更明智还是应该将每个测试与要测试的真实代码放在同一文件夹中?”