Beruflich Dokumente
Kultur Dokumente
CppUnit
Projekteinstellungen
im Visual Studio
Dieses Dokument beschreibt den Aufbau eines Testprojektes für CppUnit 1).
Hier wird ein MFC-Testrunner-Projekt mit Oberfläche gezeigt, Für die Variante mit Konsole
wird auf die CppUnit-Doku verwiesen (HTML-Dokumentation, Beispielprojekt „Money“).
Im Solution Explorer sämtliche Dateien entfernen (Source Files, Header Files, Resourcen,
ReadMe, Manifest). Dateien auch aus dem Projektverzeichnis löschen. Es werden nur die
Project Properties benötigt, die nun noch angepasst werden.
Es empfiehlt sich einen eigenen Folder im Solution Explorer für zu testende Klassen und den
Testklassen anzulegen.
-2-
UnitTests mit CppUnit FH-Hagenberg
-3-
UnitTests mit CppUnit FH-Hagenberg
-4-
UnitTests mit CppUnit FH-Hagenberg
-5-
UnitTests mit CppUnit FH-Hagenberg
Der Zugriff auf die CppUnit-Header-Dateien erfolgt im eigenen Programmcode der Test-
klassen mittels relativen Pfad zum Framework-Verzeichnis:
using CppUnit::Orthodox;
using CppUnit::Test;
using CppUnit::TestCaller;
using CppUnit::TestCase;
using CppUnit::TestSuite;
-6-
UnitTests mit CppUnit FH-Hagenberg
Header: SimpleClass.h
#ifndef SIMPLE_CLASS_INCLUDED
#define SIMPLE_CLASS_INCLUDED
#include <vector>
class SimpleClass {
public:
void AddElem(int const val);
int GetElem(size_t const idx) const;
void Clear();
size_t GetSize() const;
void Sort(bool ascending);
private:
std::vector<int> v;
};
#endif
Implementierung: SimpleClass.cpp
#include <algorithm>
#include "SimpleClass.h"
void SimpleClass::Clear() {
v.clear();
}
-7-
UnitTests mit CppUnit FH-Hagenberg
TestClasses:
Typischer Aufbau einer Testklasse für SimpleClass:
Header: SimpleClassTest.h
#ifndef SIMPLE_CLASS_TEST_INCLUDED
#define SIMPLE_CLASS_TEST_INCLUDED
using CppUnit::Orthodox;
using CppUnit::Test;
using CppUnit::TestCaller;
using CppUnit::TestCase;
using CppUnit::TestSuite;
public:
void setUp();
void tearDown();
void testGetSize();
void testSort();
void testGetElem();
private:
SimpleClass * mpObj;
};
#endif // SIMPLE_CLASS_TEST_INCLUDED
-8-
UnitTests mit CppUnit FH-Hagenberg
Implementierung: SimpleClassTest.cpp
#include "SimpleClassTest.h"
// empty vector
// ——————
mpObj->Clear();
CPPUNIT_ASSERT (mpObj->GetSize() == 0);
// insertion + length
// —————————
for (int i = 0; i < 100000; i++) {
mpObj->AddElem(i);
CPPUNIT_ASSERT (mpObj->GetSize() == (size_t)i + 1);
}
}
void SimpleClassTest::testSort() {
void SimpleClassTest::testGetElem() {
-9-
UnitTests mit CppUnit FH-Hagenberg
TestRunner:
Das Grundgerüst des MFC-Hauptprogrammes hat folgenden Aufbau:
TestMain.h
============
#ifndef TestMain_INCLUDED
#define TestMain_INCLUDED
#include <afxext.h>
using CppUnit::MfcTestRunner;
using CppUnit::TestFactoryRegistry;
// Class Declarations
// —————————
class TestMain : public CWinApp {
private:
BOOL InitInstance () {
MfcTestRunner runner;
return FALSE;
}
};
#endif // TestMain_INCLUDED
TestMain.cpp:
===============
// Global Variables
// ————————
TestMain gApplication;
- 10 -
UnitTests mit CppUnit FH-Hagenberg
Typische Ausgabe für einen erfolgreichen Testlauf:
- 11 -