本页内容

测试

操作指南:测试

自定义测试、测试框架和测试工具的处理方式。

要设置测试处理首选项,请转到“Preferences ” > “Testing ” > “General ”。

“测试”首选项中的“常规”选项卡

下表总结了常规测试首选项。

设置
Scan threads设置扫描测试时使用的 worker 线程数量。默认情况下,Qt Creator 使用四分之一的可用逻辑 CPU。
Omit internal messages省略内部消息。
Omit run configuration warnings省略推导配置的运行配置警告。
Limit result output默认情况下,测试结果输出最多显示 100,000 个字符。
Limit result description设置测试结果工具提示和描述中的最大行数。
Open results when tests start测试开始时自动显示测试结果。
Open results when tests finish测试结束时自动显示测试结果。
Open results only for unsuccesfull test runs仅在测试结果中包含失败、致命或意外通过的测试时显示测试结果。
Automatically scroll results视图会自动滚动以显示最新结果。
Group results by application按您用于运行测试的可执行文件路径对测试结果进行分组。如果您有多个测试可执行文件并同时运行它们,此功能非常有用。
Process arguments将您在运行配置中指定的参数传递给测试可执行文件。这是一项实验性功能,可能会导致测试可执行文件的执行失败。已知会干扰所用测试框架的选项将被过滤掉。
Automatically run在当前项目构建成功后,自动运行所有或选定的测试。
Timeout设置执行单个测试用例的最大时间(以秒为单位)。
Reset Cached Choices有时,Qt Creator 无法推断应使用哪个可执行文件或运行配置。如果在尝试执行测试时,系统反复提示您选择要运行的测试,您可以让其缓存您的选择,并在适当情况下使用这些选择。当您切换到另一个项目、关闭当前项目或选择此设置时,Qt Creator 会清除缓存。
Active Test Frameworks选择要由Qt Creator 处理的测试。为提高测试全量扫描的性能,请禁用您不使用的测试框架。
Group将活跃测试框架下的相关测试用例分组。默认情况下,Qt Creator 会将位于同一目录下的测试用例分组。

若要覆盖当前项目的某些首选项,请转至“Projects ” > “Project Settings ” > “Testing ”。

Qt Test

要设置 Qt Test 的偏好设置,请转至“Preferences ” > “Testing ” > Qt Test

“测试”首选项中的“Qt Test”选项卡

基准测试中的代码会被计时,并且可能会重复执行多次,以获得准确的测量结果。这取决于您在Benchmark Metrics 中选择的测量后端:

  • 实际运行时间
  • CPU 时钟计数器
  • 事件计数器
  • ValgrindCallgrind
  • Linux Perf

有关更多信息,请参阅《创建基准测试》。

下表总结了其他 Qt Test 首选项。

设置
Disable crash handler while debugging允许调试器在断言时中断 Qt Test 测试。
Use XML outputXML 输出可避免解析问题,但纯文本更易于阅读。

注意:纯 文本会遗漏一些信息,例如持续时间。

Verbose benchmarks在运行基准测试时获取详细输出。
Log signals and slots在测试日志中记录关于信号和槽的信息。
Limit warnings显式限制测试日志中的警告最大数量。如果希望完全不限,请将限制值设为 0。默认限制为 2000。
Check for derived Qt Quick tests检查Qt Quick 是否存在从TestCase 派生的测试。

注意:此 功能开销较大,会显著增加扫描时间。

Find user-defined locations解析消息以查找以下模式,并将其用作位置信息:file://filepath:line

其中“:line”为可选项。

注意:如果 在代码中使用这些模式,调试消息和其他消息的位置信息可能会得到改善,但存在位置信息不准确和性能下降的风险。

Google 测试

要指定运行 Google 测试的设置,请转至Preferences >Testing >Google Test

“测试”首选项中的“Google 测试”选项卡

下表总结了 Google 测试的首选项。

设置
Run disabled tests在测试运行期间执行已禁用的测试。
Throw on failure将断言失败转换为 C++ 异常。
Break on failure while debugging将失败转换为调试器断点。
Repeat tests运行多轮测试。
Iterations测试的运行次数。
Shuffle tests通过每次以不同的顺序运行测试,确保测试的独立性和可重复性。
Seed用于初始化随机生成器的种子。值 0 将根据当前时间戳生成种子。
Group mode使用GTest Filter 将 Google 测试分组。
Active filter要使用的 GTest 过滤器。

有关 GTest 过滤器的更多信息,请参阅“运行测试子集”。

Boost 测试

要指定运行 Boost 测试的设置,请转至“Preferences ” > “Testing ” > “Boost Test ”。

“测试”首选项中的“Boost 测试”选项卡

下表总结了 Boost 测试的首选项。

设置
Log format要在测试报告中记录的事件类型。
Report level测试结果报告的详细程度。如果不需要报告,请选择“No ”。
Randomize以随机顺序执行测试。
Seed用于初始化随机化器的种子。值为 0 表示不进行随机化,值为 1 表示使用当前时间,任何其他值都会生成一个随机种子。
Catch system errors捕获或忽略系统错误。
Floating point exceptions检测浮点异常中断。
Detect memory leaks检测内存泄漏。

Catch2 测试

要指定运行 Catch2 测试的设置,请转至“Preferences ” > “Testing ” > “Catch Test ”。

“测试”首选项中的“捕获测试”选项卡

下表总结了 Catch2 测试的首选项。

设置
Show success也显示成功的表达式。默认情况下,Catch2 仅打印失败的表达式。
Break on failure while debugging将失败转换为调试器断点。
Skip throwing assertions跳过测试抛出异常的断言。
Visualize whitespace将空白字符转换为转义序列。
Abort after当失败次数达到框内指定的数量时,终止测试。
Benchmark samples在运行基准测试时要收集的样本数量。
Benchmark resamples基准测试后用于统计自举法的重采样次数。
Benchmark confidence interval统计自举的置信区间。
Benchmark warmup time在基准测试开始前,每次测试的预热时间。
Disable analysis禁用统计分析和自举法。

基于 CTest 的测试

要指定运行基于 CTest 的测试的设置,请转至“Preferences ” > “Testing ” > “CTest ”。

“测试”首选项中的“CTest”选项卡

下表总结了 CTest 的首选项。

设置
Output on failure如果测试失败,则显示测试相关的输出。与 CTest 的默认设置相反,此设置默认处于启用状态。
Schedule random以随机顺序执行测试。
Stop on failure当第一个测试失败时,自动停止测试执行。
Output mode,CTest 输出的详细程度。

注意:此 设置仅影响文本显示中的输出内容。

Repeat tests根据Repetition mode 的设置重新运行测试。在Count 中设置测试的重试最大次数。
Run in Parallel使用指定的Jobs 数量并行运行测试。在Test load 中,限制并行执行。如果会导致CPU负载超过Threshold 中设置的阈值,CTest将不会启动新的测试。

另请参阅 《如何:测试》。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.