1

マウスクリックを受け入れる空白のウィンドウをポップアップする MyWindow クラスがあります。マウスクリックイベントを単体テストする必要があります

コードスニペット:

void TestGui::testGUI_data()
{
  QTest::addColumn<QTestEventList>("events");
  QTest::addColumn<QTestEventList>("expected");

  Mywindow mywindow;
  QSize editWidgetSize = mywindow.size();
  QPoint clickPoint(editWidgetSize.rwidth()-2, editWidgetSize.rheight()-2);

  QTestEventList events, expected;
  events.addMouseClick( Qt::LeftButton, 0, clickPoint);
  expected.addMouseClick( Qt::LeftButton, 0, clickPoint);
  QTest::newRow("mouseclick") << events << expected ;
}

void TestGui::testGUI()
{
  QFETCH(QTestEventList, events);
  QFETCH(QTestEventList, expected);

  Mywindow mywindow;
  mywindow.show();

  events.simulate(&mywindow);
  QCOMPARE(events, expected); } // prints FAIL!  : TestGui::testGUI(mouseclick) Compared values are not the same
  ...
}

マウスのクリックをテストする方法mywindow. 単体テストのマウスイベントに対するより良いアプローチはありますか?

ありがとう、ベルズ

4

1 に答える 1

2

QTest 名前空間のドキュメントをご覧ください。ウィジェットの特定の位置でのマウス クリックをエミュレートできる QTest::mouseClick 関数があります (ウィジェットを表示する必要さえありません)。

私が覚えている限り、QCOMPARE は指定された引数に "operator==" を使用し、それが false を返す場合は、"QTest::toString<T>(const T& t)" 関数を使用して出力しようとします。QCOMPARE 引数のタイプの実装がない場合、値が異なるだけで出力されます。必要な型の "QTest::toString<T> (const T& t)" を再実装する方法の詳細については、QTest 名前空間のドキュメントを再度参照してください。

于 2010-04-27T08:27:35.607 に答える