c++ - QTest覆盖涂料法

标签 c++ qt qt5 qwidget qtestlib

我有自定义的 QWidget,其中所有绘画都是手动完成的(fillRect、drawRect、drawText、drawPixmap ..)。多达 120 个属性会影响绘制内容、闪烁方式等。遗留的意大利面条代码。

当我更改某些内容时,我想首先测试旧功能。是否有推荐的方法如何通过单元测试覆盖 QWidget::paintEvent(QPaintEvent* event) ?我是否必须模拟 QPainter,或者有没有办法检查 PaintEvent 输出?

你如何用测试来覆盖paintEvetnt?

最佳答案

最后存储并比较图像,例如:

auto configuredImage = widgetUnderTest->grab().toImage();
QImage sampleImage;      
sampleImage.load("src/Images/configuredImage.png");
QCOMPARE(configuredImage, sampleImage);

关于c++ - QTest覆盖涂料法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251824/

相关文章:

linux - 在结构列表上调用 std::sort 时将 const 作为 'this' 参数错误传递

c++ - 如何使用 Intel TBB 并行运行一个函数两次?

qt - 每次需要重新绘制时,如何在像素图中抓取 qwidget/render?

android - Qt qml : Custom dialog not displayed on device, 应用程序崩溃

qt - windeployqt 复制了很多不需要的文件

c++ - 在 Qt C++ 中的自定义项委托(delegate)上绘制文本时的性能问题

qt - QMake moc 文件被 namespace 混淆

c++ - 检测C++ Qt组合中的内存泄漏?

c++ - decltype(new any_type()) 是否可能发生内存泄漏?

c++ - 调用 zmq_poll() 如何导致调用 zmq_abort()?