-1

我正在研究 Qt Test 并且知道有四个特殊的插槽在测试用例之前和之后执行。

  1. initTestCase() 将在第一个测试函数执行之前被调用。
  2. cleanupTestCase() 将在最后一个测试函数执行后被调用。
  3. init() 将在每个 testfunction 执行之前被调用。
  4. cleanup() 将在每个 testfunction 之后调用。

我知道如何使用它们作为 Qt 文档中的一个明确示例。

但是我的问题是我想查看这些插槽的真实使用情况,而不是打印示例 qDebug。在这些插槽中可以更改什么?

4

1 回答 1

0

我在这里找到了我自己的问题的答案。

尝试始终执行 initTestCase() 和 cleanupTestCase() 方法,以便可以在启动和测试结束时执行它们。这些方法通常是创建和删除对象,如您在示例中所见。如果你不创建它们,它们无论如何都会被“执行”,但不会做任何事情。

#ifndef CIRCLETEST_H

#define CIRCLETEST_H

#include <QObject>

#include <QtTest/QtTest>

#include "../Geometry/circle.h"

class CircleTest : public QObject

{

  Q_OBJECT

public:

  explicit CircleTest(QObject *parent = 0);

private:

  Circle *c1;

  Circle *c2;

private slots:

  void initTestCase();

  void testRadius();

  void testArea();

  void cleanupTestCase();

};

#endif // CIRCLETEST_H

圈子.h

#include "circletest.h"

CircleTest::CircleTest(QObject *parent) :

  QObject(parent)

{

}

void CircleTest::initTestCase()

{

  c1 = new Circle();

  c2 = new Circle(10);

}

void CircleTest::testArea()

{

  QCOMPARE(c1->getArea(), 3.14);

  QCOMPARE(c2->getArea(), 314.0);

}

void CircleTest::testRadius()

{

  QCOMPARE(c1->getRadius(), 1.0);

  QCOMPARE(c2->getRadius(), 10.0);

}

void CircleTest::cleanupTestCase()

{

  delete c1;

  delete c2;

}
于 2020-09-21T15:54:36.180 回答