【问题标题】:Unit Testing in QTestLib - running single test / tests in class / all testsQTestLib 中的单元测试 - 在类中运行单个测试/测试/所有测试
【发布时间】:2011-02-10 19:04:30
【问题描述】:

我刚刚开始使用 QTestLib。我经历了manualtutorial。尽管我了解如何创建测试,但我只是不知道如何使这些测试便于运行。我的单元测试背景是 NUnit 和 MSTest。在这些环境中,只需单击右键即可在运行单个测试、单个测试类中的所有测试或整个项目中的所有测试之间切换是微不足道的(至少使用 GUI)。

我在 QTestLib 中看到的只是您使用 QTEST_MAIN 宏在单个类中运行测试,然后分别编译和测试每个文件;或使用main() 中的QTest::qExec() 定义要测试的对象,然后在您想要添加/删除测试类时手动更改并重新编译。

我确定我错过了一些东西。我希望能够轻松:

  • 运行单个测试方法
  • 在整个班级中运行测试
  • 运行所有测试

其中任何一个都会调用适当的设置/拆卸函数。

编辑:赏金现在可用。必须有一个更好的方法,或者一个 GUI 测试运行器来为你或其他东西处理它。如果您在测试驱动的环境中使用 QtTest,请告诉我什么对您有用。 (脚本、测试运行器等)

【问题讨论】:

标签: unit-testing qt qtestlib


【解决方案1】:

您可以通过将测试名称传递为command line arguments 来仅运行选定的测试用例(测试方法):

myTests.exe myCaseOne myCaseTwo

它也会运行所有的初始化/清理。不幸的是,不支持通配符/模式匹配,因此要运行以给定字符串开头的所有案例(我假设这就是您所说的“在整个类中运行测试”的意思),您必须创建脚本(windows批处理/ bash/perl/whatever)调用:

myTests.exe -functions

使用第一种语法解析结果并运行选定的测试。

要运行所有案例,只需不传递任何参数:

myTests.exe

【讨论】:

    【解决方案2】:

    OP 要求的三个功能现在已集成到Qt Creator

    将自动扫描项目以进行测试,它们会出现在“测试”窗格中。截图左下角:

    可以通过单击复选框启用每个测试和相应的数据。 上下文菜单允许运行所有测试、类的所有测试、仅选定的测试或仅一个测试。 根据要求。

    测试结果也可以从 Qt Creator 获得。颜色指示器将显示每个测试的通过/失败,以及调试消息等附加信息。

    结合 Qt Creator,对每个测试用例使用 QTEST_MAIN 宏会很好地工作,因为 Qt Creator 会自动调用每个编译的可执行文件。

    有关更详细的概述,请参阅 Qt 创建者手册的Running Autotests 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多