Testen mit Qt - Teil 1/3

Für das Beispiel wollen wir einen einfacher Taschenrechner implementieren. Dieser Taschenrechner kann lediglich addieren, einfacher gehts nicht.

Zuerst die Header-Datei und die Implementierung der Klasse Calculator:

calculator.h

#ifndef CALCULATOR_H
#define CALCULATOR_H

class Calculator
{
public:
    int sum(int a, int b);
};

#endif // CALCULATOR_H

calculator.cpp

#include "calculator.h"

int Calculator::sum(int a, int b)
{
    return a + b;
}

Als nächstes die main-Methode die zum Testen der Calculator-Klasse verwendet wird:

main.cpp

#include <iostream>

#include "calculator.h"

int main()
{
    Calculator calculator;
    std::cout << "sum: " << calculator.sum(3, 2) << std::endl;
    return 0;
}

Zum Schluss noch die obligatorische Projektdatei für Qt:

example1.pro

QT += core
QT -= gui
CONFIG += console
CONFIG -= app_bundle
HEADERS += calculator.h
SOURCES += main.cpp calculator.cpp
Projektordner Example 1

Mit den ersten vier Zeilen manifestieren wir die zu erstellen Applikation als Konsolenapplikation. Die Angabe des Projekttemplates TEMPLATE=APP kann entfallen, weil es der Standardwert ist. Die letzten beiden Zeilen nennen alle notwendigen Quelltextdateien.

Im Bild rechts ist der Inhalt des Projektordners für das Beispiel abgebildet.

Liegen alle vier Dateien im selben Ordner, vorzugsweise example1, kann das Projekt nun mit den folgenden Zeilen übersetzt werden:

qmake
make

Das Ergebnis ist eine ausführbare Datei example1 unter Unix bzw. example1.exe unter Windows. Der Name der Datei kann mit TARGET=DATEINAME in der Projektdatei festgelegt werden, Standardwert ist der Ordnername in dem sich die Projektdatei befindet.

Mit Ausführen der Datei wird der Test ausgeführt und vom Entwickler durch "draufgucken" ausgewertet. Die Ausgabe des Test lässt sich natürlich noch beliebig verfeinern, um dem Entwickler das Erkennen des Testergebnis zu vereinfachen.

Die Lösung ist einfach, hat aber ein paar Nachteile:

  • Mit einer Projektdatei kann nur eine Applikation erstellt werden. Man muss sich also entscheiden, ob man eine Applikation zum Testen oder zum Ausliefern erstellen möchte. MIt den subdirs-Template kann der Nachteil relativiert werden. Der Taschenrechner wird als Bibliothek erstellt und daneben wird eine Applikation zum ausliefern und eine zum Testen erstellt. Beide Applikationen linken gegen die Biblothek.
  • Es gibt etliche ausgereifte Test-Frameworks, die das Erstellen von Tests gegenüber dem manuellen Ansatz enorm vereinfachen.
  • Bei der modernen Softwareentwicklung werden die Test als Bestandteil des Builds ausgeführt. Das ist hier nur mit externen Skripten möglich.

In nächsten Teil zeige ich, wie sich diese Probleme nur mit Qt und ohne externe Werkzeuge lösen lassen.

Zurück