gpt4 book ai didi

c++ - 使用 qExec 创建 Qt 测试套件

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:39 24 4
gpt4 key购买 nike

QTest 鼓励您将单元测试组织为单独的可执行文件。为此有一个特殊的宏,它生成主要函数:QTEST_MAIN

我发现这种方法不是很干净,一次运行所有测试更有用。所以我搜索了是否有这样做的可能性,我发现有几个人提出了相同的解决方案:

Qt: run unit tests from multiple test classes and summarize the output from all of them

http://www.davideling.it/2014/01/qtest-multiple-unit-test-classes/

https://alexhuszagh.github.io/2016/using-qttest-effectively/

解决方案是放弃使用 QTEST_MAIN 宏并编写您自己的 main 函数,在其中执行您要执行的测试:

int main(int argc, char *argv[])
{
int status = 0;

{
TestA ta;
status |= QTest::qExec(&ta, argc, argv);
}

{
TestB tb;
status |= QTest::qExec(&tb, argc, argv);
}

return status;
}

我发现这是个好主意,但是,有一个问题。 Qt's documentation qExec 的一部分听起来像这样:

For stand-alone test applications, this function should not be called more than once, as command-line options for logging test output to files and executing individual test functions will not behave correctly.

那些人透露的解决方案只是建议:多次执行qExec。任何人都可以向我解释用于将测试输出记录到文件和执行单个测试函数的命令行选项将无法正常运行的确切含义吗?

这种方法到底有什么问题?

最佳答案

文档可能在谈论 Logging Options .如果调用 qMain 两次并将 -o 选项传递给两次调用,则第二次调用可能会覆盖第一次调用的日志文件。如果您知道这永远不会发生,您可能会选择忽略该警告。您也可以不将命令行参数传递给 qExec,这样您将强制输出到标准输出,但您当然失去了传递其他参数的能力。

如果你想从 Qt Creator 运行测试用例,你也不应该多次调用 qExec。每个测试类都会显示在测试列表中,但运行一个测试类只会运行所有测试类,因此您会获得针对一个类显示的每个类的结果。如果您运行所有测试(默认),您将获得结果的平方数。

因此,如果您不喜欢多重可执行方法,只需使用 Google Test。不存在以上问题,造物主提供支持。设置非常简单:当您创建自动测试项目时,向导会指导您。您唯一需要做的就是下载 Google Test。Google 测试用例将显示在测试 View 中的 Qt 测试用例旁边。

关于c++ - 使用 qExec 创建 Qt 测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com