c++ - 开始 Code::blocks 和 UnitTest++

标签 c++ unit-testing codeblocks

我即将开始一个 C++ 项目,但我还停留在基础上。

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

我已经问过 question关于放置 UnitTest::RunAllTests() 命令的位置,他们告诉我最好的位置是单独程序的 main()

我如何在 Code::Blocks 中做到这一点?我想我需要创建 2 个项目:

  • 拥有自己的main()的“真实”项目;
  • 包含测试和 main() 的单元测试项目,其中包含 UnitTest::RunAllTests()

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

我的问题是:

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

最佳答案

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

  1. 按照 official documentation page 上的说明进行操作,我已将包含已编译库和所有源文件的 UnitTest++ 文件夹放在我的项目路径中。
  2. 然后我为所有单元测试创​​建了一个测试项目,其中一个主要函数包含著名的 UnitTest::RunAllTests()。我将 $exe_output 作为构建后过程放在此处,以便在每次构建此项目时自动执行测试。
  3. 我创建了要测试的代码所在的“真实”项目。在build设置中我将测试项目指定为真实项目的依赖项,这样每次构建真实项目时,它也会先构建测试项目。

有了这些设置,我就可以在我的测试和真实代码上工作,而且我只需要构建真实的代码就可以执行更新的测试。任何失败的测试也会导致构建失败。

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

关于c++ - 开始 Code::blocks 和 UnitTest++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462752/

相关文章:

c - 在 Code::Blocks 中运行 OpenMP

C++构造函数错误

c++ - 如何在C中写入特定地址的数据

reactjs - React 单元测试传单

c++ - C++ 的 CATCH 单元测试比较 std::array

unit-testing - 没有 Maven 和 JBoss AS 的 JSFUnit

c++ - 无法将 'LPCWSTR {aka const wchar_t*}' 转换为 'LPCSTR {aka const char*}

c++ - 有什么理由去寻找继承/多态性的替代方案吗?

c++ - 将函数应用于数组 vector 的元素

C++ 程序在 Linux 上运行完美,但在 Windows 上无法运行