Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 正确地对QItemDelegate进行单元测试_Qt_Unit Testing_Qt5 - Fatal编程技术网

Qt 正确地对QItemDelegate进行单元测试

Qt 正确地对QItemDelegate进行单元测试,qt,unit-testing,qt5,Qt,Unit Testing,Qt5,我目前正在为我拥有的一个类实现单元测试,该类包含一个QAbstractTableModel、一个QSortFilerProxyModel、一个QTableView和一个QStyledItemDelegate。测试模型很容易。委托是另一个问题,它决定如何绘制每个单元格(以及最终用户看到的内容) 问题的关键在于paint()作为参数被称为w/aqmodelindex,它有一个指向模型的指针。它通常从那里获取数据,并决定绘制什么颜色,在双精度的情况下使用多少小数,等等。由于QModelIndexes本

我目前正在为我拥有的一个类实现单元测试,该类包含一个QAbstractTableModel、一个QSortFilerProxyModel、一个QTableView和一个QStyledItemDelegate。测试模型很容易。委托是另一个问题,它决定如何绘制每个单元格(以及最终用户看到的内容)

问题的关键在于paint()作为参数被称为w/aqmodelindex,它有一个指向模型的指针。它通常从那里获取数据,并决定绘制什么颜色,在双精度的情况下使用多少小数,等等。由于QModelIndexes本质上是“内部”的,模拟代理绘制索引的最佳方式是什么?我可以让我的模型创建一个索引,然后将其传递给委托进行单元测试。不过,这对我来说似乎有点俗气


思考?

您可以将决定逻辑抽象到另一个类中并进行测试。如果您发现自己处于一种想要/需要测试类的内部结构的情况下,它表明了设计气味(糟糕的设计)。但是,请注意,(单元)测试是一种侵入性编程技术,因此您的设计与测试需求发生冲突的情况并不少见。干杯。我知道在测试和严密的设计之间有一种平衡。。。至于测试内部结构,或多或少需要通过编程确保我(或其他程序员)不会无意中破坏某些东西。我开始相信这个想法实际上是理想主义的。你正在设计一个可以做一些事情的应用程序。证明某些内部部件正在工作是毫无意义的,因此只有对暴露的(公共/外部)行为(即某些东西)进行有意义的测试。最后,这是唯一重要的事情。只要我的2美分。