CppUnit
| {{#if: CppUnit | CppUnit | {{#invoke:WLink|getArticleBase}} }}
{{#if: | | ||||||||
|---|---|---|---|---|---|---|---|---|
colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | |
{{#if: {{#invoke:Wikidata|claim|P154}} |
| ||||||||
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
}} }}{{#if: | | ||||||||
| {{#if: | }}| }} | ||||||||
| Basisdaten
{{#if: | | ||||||||
| Hauptentwickler |
{{#if: {{#invoke:Wikidata|claim|P126}} |
| |||||||
| Maintainer | claim|P126|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |||||||
| Entwickler |
{{#if: {{#invoke:Wikidata|claim|P178}} |
| |||||||
| Entwickler | claim|P178|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |||||||
| Erscheinungsjahr |
{{#if: {{#invoke:Wikidata|claim|P577}} |
| |||||||
| Erscheinungsjahr | claim|P577|references=ja|list=, }} |
{{#if: {{#invoke:Wikidata|claim|P571}} |
| |||||||
| Erscheinungsjahr | claim|P571|references=ja|list=, }}
}} }} }}{{#ifeq: 1.15.1 | KEINE_ANGABE || {{#if: 1.15.1 | | |||||||
| Aktuelle Version | ({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an. |
format | 25. Dezember 2019 | {{#timefl:now|date}}}} | {{{2}}} | T._Monat JJJJ}} | lang= {{#switch: | -|=de | #default=de-AT
}} }} }}) }} |
{{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} |
|
| Aktuelle Version | claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} | ({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}} }}{{#ifeq: | KEINE_ANGABE || {{#if: | | |||||||
| Aktuelle Vorabversion | ({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an. |
format | | {{#timefl:now|date}}}} | {{{2}}} | T._Monat JJJJ}} | lang= {{#switch: | -|=de | #default=de-AT
}} }} }}) }} |
{{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} |
|
| Aktuelle Vorabversion | claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} | ({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}} }}{{#if: | | |||||||
| Ausführungsumgebung |
{{#if: Plattformübergreifend |
| |||||||
| Betriebssystem | Plattformübergreifend |
{{#if: {{#invoke:Wikidata|claim|P306}} |
| |||||||
| Betriebssystem | claim|P306|parameter=link|references=ja|list=, }}
}} }} }}{{#if: | | |||||||
| Programmiersprache |
{{#if: {{#invoke:Wikidata|claim|P277}} |
| |||||||
| Programmiersprache | claim|P277|parameter=link|references=ja|list=, }}
}} }}{{#if: Unit-Test | | |||||||
| Kategorie | Unit-Test
}}{{#if: GNU Lesser General Public License | | |||||||
| Lizenz | GNU Lesser General Public License |
{{#if: {{#invoke:Wikidata|claim|P275}} |
| |||||||
| Lizenz | claim|P275|parameter=link|references=ja|list=, }}
}} }}{{#if: nein | | |||||||
| deutschsprachig | faculty|nein}} | ja | nein }}
}}{{#if: | | |||||||
| Sonstiges | {{{Sonstiges}}}
}}{{#if: freedesktop.org/wiki/Software/cppunit | | |||||||
freedesktop.org/wiki/Software/cppunit |
{{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} |
| ||||||||
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
}} }}{{#if: | | ||||||||
| Dateien | [[c:Category:Created with |]]
}} | |||||||
CppUnit ist ein Unit-Test-Framework für die Programmiersprache C++. Es ist dem Java-Tool JUnit nachempfunden.
CppUnit testet Programmeinheiten (meistens Klassen). Zur Erstellung eines neuen Tests wird eine neue Klasse erstellt, die mit CppUnit-Makros erweitert wird. Die Methoden der Klasse werden als Test registriert. Innerhalb der Methoden können nun Methoden anderer Klassen getestet werden. Dabei testet man üblicherweise, ob eine konkrete Eingabe eine richtige Ausgabe produziert. Die Ergebnisse der Tests können maschinenlesbar in XML, als Textausgabe oder mit den mitgelieferten GUI-basierten Programmen angezeigt werden.
Features
CppUnit hat folgende Eigenschaften:<ref>cppunit.sourceforge.net 25. Oktober 2006</ref>
- XML-Ausgabe mit Elementen für zusätzliche Angaben
- Compiler-ähnliche Text-Ausgabe für die Integration in IDEs
- Makros für die einfache Erstellung von Test-Suites
- Unterstützung von hierarchischen Tests (Tests, die aus einfacheren Tests zusammengesetzt werden)
- Test-Registrierung zur schnelleren Codegenerierung
- Test-Plug-In für schnellere Compile/Test-Zyklen (selbsttestfähige dynamische Bibliothek)
- Schutzmechanismus zur Kapselung der Testausführung, ermöglicht das Abfangen von Ausnahmen, die nicht von der Standard-Ausnahme (
std::exception) abgeleitet sind. - MfcTestRunner, ein auf den Microsoft Foundation Classes (MFC) basierender Test-Runner
- QtTestRunner, ein auf Qt 4 basierender grafischer Test-Runner
- CursesTestRunner, ein auf Curses basierender Test-Runner
- WxWidgetsTestRunner, ein auf wxWidgets basierender Test-Runner
Beispiel
Dieses Beispiel zeigt einen Unit-Test. Die Klasse Kalkulator ist das zu testende Objekt, KalkulatorTest der Unit-Test. (Für die Ausführung des Tests muss der Programmstartpunkt modifiziert werden.)
Klasse Kalkulator <syntaxhighlight lang="cpp"> ... class Kalkulator {
public:
// Berechne die Wurzel von k
double squareRoot(double k) { return sqrt(k); }
}; </syntaxhighlight>
Klasse KalkulatorTest <syntaxhighlight lang="cpp">
- include <cppunit/extensions/HelperMacros.h>
class KalkulatorTest : public CPPUNIT_NS::TestFixture {
CPPUNIT_TEST_SUITE( KalkulatorTest ); CPPUNIT_TEST( testSqrt ); CPPUNIT_TEST_SUITE_END();
public: void testSqrt();
};
CPPUNIT_TEST_SUITE_REGISTRATION( KalkulatorTest );
void KalkulatorTest::testSqrt() {
Kalkulator kalk; CPPUNIT_ASSERT(kalk.squareRoot(9) == 3);
} </syntaxhighlight>
Weblinks
- CppUnit Homepage (englisch)
- <templatestyles src="Webarchiv/styles.css" />{{#if:20160317110454
| {{#ifeq: 20160317110454 | *
| {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20160317110454}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20160317110454}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: CppUnit Tutorial – Unit-Tests mit C++ | {{#invoke:WLink|getEscapedTitle|CppUnit Tutorial – Unit-Tests mit C++}} | {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20160317110454|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html}}
|| {{#if: || }}
}}{{#if: CppUnit Tutorial – Unit-Tests mit C++
| {{#if: {{#invoke:WLink|isBracketedLink|CppUnit Tutorial – Unit-Tests mit C++}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Programmierwerkzeug
- Testsoftware