Einführung in JUnit 4
|
|
- Sylvia Adler
- vor 8 Jahren
- Abrufe
Transkript
1 Einführung in JUnit 4 für LOMF-Programmierer Version: 1.2 Fragen, Anregungen und Korrekturen zu diesem Dokument bitte per an: Christoph.Schulz@fhdw.de Inhaltsverzeichnis 1 Einleitung Ein kleiner Crash-Kurs Aufgabe Schnittstelle formulieren Testrahmen (Testcase) entwickeln Testfälle schreiben Testfälle ausführen Mehr über Testfälle Trennen von Initialisierung und Auswertung Testfälle und Ausnahmen Unerwünschte Ausnahmen Erwünschte Ausnahmen Zusammenfassung...12 Anhang A: Erstellung eines Java-Projekts mit JUnit-Unterstützung...13 Anhang B: Versionshistorie...19 Literaturverzeichnis...19 Abbildungsverzeichnis Abbildung 1: Erstellen eines Testcases...4 Abbildung 2: JUnit-Fenster mit fehlgeschlagenen Tests...7 Abbildung 3: JUnit-Fenster mit erfolgreichen Tests...8 Abbildung 4: Anlegen eines Java-Projekts, Teil Abbildung 5: Anlegen eines Java-Projekts, Teil Abbildung 6: Integration der JUnit-Unterstützung: "Libraries" auswählen...15 Abbildung 7: Integration der JUnit-Unterstützung: "Add Library" auswählen...16 Abbildung 8: Integration der JUnit-Unterstützung: JUnit-Bibliothek auswählen...16 Abbildung 9: Integration der JUnit-Unterstützung: JUnit-Version auswählen...17 Abbildung 10: Abschluss der JUnit-Integration, Teil Abbildung 11: Abschluss der JUnit-Integration, Teil Abbildung 12: Neues Java-Projekt mit JUnit-Unterstützung...18 Tabellenverzeichnis Tabelle 1: Von JUnit angebotene Methoden zum Vergleichen von Soll- und Ist-Werten...5 1
2 1 Einleitung Herzlich willkommen in der Welt von Java! Als erfahrener LOMF 1-Recke hast du bereits die Höhen und Tiefen der funktionalen Programmierung gemeistert und die Grundlagen der Software-Entwicklung verinnerlicht. Begriffe wie Algorithmus, Funktion, Argument, Parameter oder Spezialisieren sind für dich keine Fremdwörter mehr. Und auch die allerersten Grundlagen des objektorientierten Paradigmas sind dir bereits vermittelt worden. Umso verständlicher, dass du dich eben nun fragst, wie in Java Programme effektiv und effizient getestet werden können. Wie? Das weißt du bereits? Dann kannst du getrost den Rest des Dokuments überspringen und dich wichtigeren Aufgaben widmen. Allerdings lernt man bekanntlich nie aus, und vielleicht enthält dieses Dokument doch ein oder zwei praktische Tipps, die dir bei deiner täglichen Arbeit in Java helfen können... Als LOMF-Programmierer war dir das Testen im Rahmen der Software-Entwicklung sicherlich in Fleisch und Blut übergangen. Kein Code ohne Testfälle war die fast schon allgegenwärtige Regel, die dich vor unliebsamen Überraschungen bewahren sollte. Kein Wunder, möchte man meinen, schließlich ist LOMF mit voller Absicht so entwickelt worden, das Testen steckt LOMF sozusagen im Blut. In Java sieht die Sache etwas anders aus. Hier ist das Testen nicht dermaßen in der Sprache verankert, wie es bei LOMF der Fall ist. Doch flexible Alternativen und mächtige Werkzeuge existieren auch hier. Insbesondere eine weit verbreitete Bibliothek wird uns in den nächsten Abschnitten besonders beschäftigen. Die Rede ist von JUnit2, einer Sammlung von Klassen, die sich einfaches Testen von Software auf die Fahne geschrieben haben. Entworfen und implementiert wurde diese Bibliothek von Erich Gamma und Kent Beck, zwei Persönlichkeiten, die einem (angehenden) Programmierer heutzutage zumindest nicht unbekannt sein sollten.3 Wir starten also mit JUnit als Test-Framework4, und weil das Arbeiten mit einem gewöhnlichen Text-Editor meist nicht besonders produktiv ist5 mit der Java-Entwicklungsumgebung eclipse6. Diese Entwicklungsumgebung hat den großen Vorteil, dass sie JUnit bereits kennt und keine künstlichen Klimmzüge gemacht werden müssen, um seine Software schnell und einfach testen zu können. Wir erinnern uns: Wenn das Testen nicht schnell und einfach ist, wird es nicht getan. Und das willst du am allerwenigsten, denn schließlich liest du ja ein Dokument übers Testen, oder? Hinweis: Im Folgenden wird vorausgesetzt, dass du mit den grundlegenden Funktionen von eclipse vertraut bist und weißt, wie man in eclipse ein Java-Projekt anlegt, Quelltext-Dateien bearbeitet und Java-Programme zum Ausführen bringt. Dies ist keine Einführung in eclipse, sondern in JUnit! Falls du dir nicht sicher bist, schau bitte im Anhang A nach, wie du ein Java-Projekt mit JUnitUnterstützung anlegen kannst. 2 Ein kleiner Crash-Kurs Dieses Kapitel stellt die grundsätzliche Funktionalität von JUnit dar, ohne dass du dich gleich in unwesentlichen Details verlierst. Es wird ein kleines LOMF-Programm vorgestellt (natürlich mitsamt Less Overhead More Fun, entwickelt von Prof. Dr. Michael Löwe s. Was, du kennst sie noch nicht? Dann mach deine Hausaufgaben und lies [GHJV95] und [Beck03], zwei Klassiker der Computer-Literatur! Ein Framework ist eine besondere Art Bibliothek, die so konzipiert ist, dass nicht dein Programm die Bibliothek ruft, sondern andersherum: Das Framework ruft dein Programm, wenn es notwendig wird. Der Kontrollfluss ist also umgedreht. Dies ist auch bekannt als sog. Hollywood-Prinzip ( Don't call us, we call you ). zumindest nicht für Anfänger! s. 2
3 Testfällen!), das in ein funktional äquivalentes Java-Programm umgewandelt werden soll. Dabei spielen in unserer Betrachtung die Testfälle eine besonders wichtige Rolle. Du wirst in diesem Abschnitt lernen, wie man Testfälle in Java/JUnit7 formuliert und durchführt. Du wirst auch sehen, wie die Testfälle eines LOMF-Programms sich direkt in die Welt von Java/JUnit übertragen lassen. Und los geht's Aufgabe Gegeben ist das folgende kleine LOMF-Programm zur rekursiven Berechnung der Fakultät: fac (n : Card) : Card [* Effects : Computes n! == fac (n). Notes : n! is recursively defined as: 0! == 1 n! == n * ((n - 1)!) [n > 0] *] ::= n.= (0).? ( 1, /* 0! == 1 (bottom case) */ n.* (n.- (1).fac ()) /* recursive invocation */ ) Zu dem Programm existieren folgende LOMF-Testfälle: fac fac fac fac fac fac (0) == 1 (1) == 1 (2) == 2 (3) == 6 (4) == 24 (10) == Die Aufgabe ist nun, die Funktion fac() in die Programmiersprache Java zu übertragen. Da du ja dir vermutlich vorstellen kannst, dass bei einer solchen Konvertierung einiges schief gehen kann, willst du natürlich erst die Testfälle in Java schreiben. Wie das geht, beschreibt der nächste Abschnitt. Zuerst aber legst du in eclipse ein passendes und vorerst leeres Java-Projekt an (siehe Anhang A: Erstellung eines Java-Projekts mit JUnit-Unterstützung). Der Name factorial bietet sich eventuell an. 2.2 Schnittstelle formulieren Bevor du die Testfälle übernehmen (genauer: konvertieren) kannst, musst du dir über die Schnittstelle8 der zu testenden Einheit Gedanken machen. Dies unterscheidet sich nicht von der Entwicklung in LOMF, wo es hieß: Zuerst Signatur (ohne Implementierung!), dann Testfälle, dann Implementierung. Du musst nun also die Schnittstelle festlegen, über welche die zu übertragende Funktion (sprich: fac()) angesprochen werden kann. Für das weitere Vorgehen gehen wir von folgender Klassendefinition aus (die du über File New Class generieren kannst): package factorial; 7 8 eigentlich in Java in Verbindung mit JUnit, aber das jedesmal hinzuschreiben ist einfach zu mühselig... Achtung: Hier ist Schnittstelle in der allgemeinen Bedeutung als Spezifikation gemeint (Eingabe, Ausgabe, Verhalten, Vor- und Nachbedingungen) und nicht in der speziellen Bedeutung als Schnittstellen-Klasse! 3
4 public class Factorial { public int compute (int number) { return 0; Diese Definition ist offensichtlich noch nicht vollständig. Sie ist aber syntaktisch einwandfrei, und genau darum geht es im ersten Schritt. Die Funktionalität wirst du erst implementieren, nachdem du die Testfälle geschrieben haben wirst. 2.3 Testrahmen (Testcase) entwickeln Nachdem du das Problem der Schnittstelle gelöst hast, machst du dich nun endlich daran, die Testfälle zu implementieren und für JUnit geeignet zu verpacken. Diese Verpackung wird Testrahmen bzw. Testcase genannt. Dazu legst du zuerst eine neue Klasse mit dem Namen FactorialTest an, welche die Testfälle beinhalten wird. Diese Klasse erbt von TestCase, einer Klasse des JUnitFrameworks. Warum dies so sein muss, wird später deutlich. Halten wir vorerst fest, dass durch die enge Verwandtschaft das JUnit-Framework später die Tests lokalisieren und ausführen kann. Die Klasse dient dir nun als Testrahmen für die noch zu schreibenden Testfälle. In eclipse kannst du nun nun zum ersten Mal von der Integration der JUnit-Bibliothek Gebrauch machen: Dazu rufst du nun über File New JUnit Test Case einen Dialog auf (1), in dem du die Standard-Vorgaben einfach übernimmst und auf Fertig stellen drückst. Nun generiert das integrierte JUnit-Plugin die entsprechende Klasse automatisch samt notwendiger Oberklasse und import-klausel. Du solltest jetzt folgenden Quelltext vor dir sehen: 4
5 package factorial; import static org.junit.assert.*; import org.junit.test; public class FactorialTest { public void test() { fail("not yet implemented"); Die import-direktiven sind wichtig, um die benötigten JUnit-Funktionen ohne zusätzliche Namensraum-Qualifikation nutzen zu können. Die Methode test wird als Beispiel automatisch generiert, wir brauchen sie jedoch nicht, weil wir unsere eigenen Testfälle entwickeln wollen, was im nächsten Abschnitt beschrieben wird. Somit lösche bitte die Methode test, bevor du zum nächsten Abschnitt übergehst. 2.4 Testfälle schreiben Du hast nun einen funktionierenden Testrahmen (na ja, noch funktioniert anscheinend gar nichts, aber das wird sich bald ändern!) Nun schreibst du die Testfälle, indem du jedem LOMF-Testfall eine eigene Test-Methode spendierst. Dabei musst du folgende Regeln einhalten: 1) Die Methode muss die Annotation besitzen. 2) Der Rumpf enthält einen Aufruf einer der verfügbaren assert-operationen oder den Aufruf der fail-operation. Punkt 1 ist notwendig, damit das JUnit-Framework deine Tests finden und ausführen kann. Punkt 2 ist wichtig, damit das JUnit-Framework überhaupt mitbekommt, wenn irgendwelche getesteten Bedingungen nicht in Ordnung sind. Die wichtigsten assert-methoden sind: assert-methode Funktion asserttrue (condition) testet, ob condition wahr ist assertfalse (condition) testet, ob condition falsch ist assertequals (expected, actual) testet, ob entweder expected und actual beide null sind oder expected.equals(actual) wahr ist assertnull (object) testet, ob object == null wahr ist assertnotnull (object) testet, ob object!= null wahr ist assertsame (expected, actual) testet, ob expected == actual wahr ist Tabelle 1: Von JUnit angebotene Methoden zum Vergleichen von Soll- und Ist-Werten In unserem Beispiel prüfen wir ausschließlich auf Gleichheit zweier Zahlen, also ist assertequals die beste Wahl. Warum, wirst du dich fragen? Schließlich haben primitive Datentypen wie int keine Operation equals! Das stimmt, aber assertequals ist für alle möglichen primitiven Datentypen, einschließlich int, überladen. Dabei werden die primitiven Datentypen in die entsprechenden Wrapper-Objekte gepackt (z.b. bei int in Integer-Objekte). Diese werden anschließend per equals verglichen. Deshalb ist es immer angebracht, assertequals zu benutzen, wenn es um den 5
6 Vergleich auf Äquivalenz geht. assertsame solltest du nur verwenden, wenn du wirklich ObjektIdentität prüfen möchtest, und das ist selten notwendig. Auch solltest du die assert-methoden, die von JUnit angeboten werden, nicht mit dem assertschlüsselwort verwechseln, dass ab der Version 1.4 des JDKs 9 existiert. Die JUnit-Methoden sind völlig normale (statische) Methoden, die in der Klasse org.junit.assert definiert sind. Dazu aber später mehr. Genug geredet, nun wird kodiert (der unveränderte Quelltext wird grau dargestellt): package factorial; import static org.junit.assert.*; import org.junit.test; public class FactorialTest { public void fac0 () { assertequals (1, new Factorial ().compute (0)); public void fac1 () { assertequals (1, new Factorial ().compute (1)); public void fac2 () { assertequals (2, new Factorial ().compute (2)); public void fac3 () { assertequals (6, new Factorial ().compute (3)); public void fac4 () { assertequals (24, new Factorial ().compute (4)); public void fac10 () { assertequals ( , new Factorial ().compute (10)); Wie du siehst, existiert nun für jede Zeile im LOMF-Test eine korrespondierende Test-Methode. Vielleicht wundert dich, dass die assertequals-argumente gegenüber den LOMF-Vergleichen in der Reihenfolge vertauscht sind. Dies ist Absicht: Die Signatur von assertequals erwartet zuerst den Soll-Wert und anschließend den Ist-Wert. Warum ist das so wichtig, wirst du bestimmt denken? Schließlich ist Gleichheit eine Äquivalenzrelation und somit symmetrisch! Das ist richtig, aber es geht hier um die Aussagekraft der Meldungen, wenn ein Testfall fehlschlägt. Wenn jetzt Testfall fac0 ausgeführt wird, schlägt der Vergleich fehl, und JUnit generiert die Fehlermeldung: java.lang.assertionerror: expected:<1> but was:<0> Im umgekehrten Fall wird die Fehlermeldung java.lang.assertionerror: expected:<0> but was:<1> 9 Kurzform für Java Development Kit 6
7 generiert. Und die ist zweifelsohne unsinnig, oder? 2.5 Testfälle ausführen Nach soviel getaner Arbeit willst du jetzt sicherlich die Früchte deines Tuns ernten. Dazu wählst du die Klasse im Editor aus, welche die auszuführenden Testfälle enthält (in unserem Beispiel also die Klasse FactorialTest), und wählst den Menüpunkt Run Run As JUnit Test. Die eclipseumgebung lädt und startet daraufhin eine JUnit-Klasse, welche die Testfälle aus der markierten Klasse extrahiert und nacheinander ausführt. Nach der Ausführung erhältst du unter dem Editor neben Konsole und Tasks eine Lasche JUnit 10, die Details zu den ausgeführten Testfällen anzeigt (vgl. 2). Das wichtigste hierbei ist der dicke Balken im oberen Teil des Fensters. Wenn er grün ist, waren alle Tests erfolgreich. Wenn er hingegen rot ist, hat mindestens ein Testfall aus irgendeinem Grund nicht funktioniert! Abbildung 2: JUnit-Fenster mit fehlgeschlagenen Tests Es gibt aus der Sicht von JUnit zwei Arten von Fehlern, die bei Tests gefunden werden können. Störungen (bzw. Failures) liegen vor, wenn der Test auf Grund eines Aufrufs einer JUnit-Methode fehlschlägt, also z. B. durch den Aufruf einer assert-methode, wenn die zu testende Bedingung nicht eintrifft. Fehler (bzw. Errors) liegen vor, wenn die Test-Methode durch eine nicht vorhergesehene Ausnahme beendet wird. Diese beiden Fälle werden gesondert behandelt, und das aus gutem Grund. Denn unbehandelte Ausnahmen werden als außergewöhnlich betrachtet, etwas, was nicht vorkommen sollte. Fehlgeschlagene Tests auf Grund von fehlgeschlagenen Vergleichen hingegen sind vorherzusehen und während der Entwicklung meistens keine Ausnahme. Wie du siehst, sind alle Testfälle fehlgeschlagen, der Balken ist rot. Das ist natürlich kein Wunder. Jetzt geht es darum, die Funktion so zu korrigieren, dass die Testfälle erfolgreich sind. Nach [Beck03] gibt es dazu mehrere Möglichkeiten11: 1) Obvious Implementation : Die offensichtliche Implementierung wird kodiert. 2) Fake It : Die Implementierung wird geringfügig modifiziert, dass die Testfälle erfolgreich sind; danach wird refaktorisiert, indem eingeführte Konstanten schrittweise in Variablen umgewandelt werden. 3) Triangulation : Aus zwei oder mehr Testfällen wird abstrahiert. In unserem Fall ist die Implementierung der Fakultät relativ einfach, da wir auch eine funktionsfähige Grundlage besitzen. Wir wählen also Methode 1 und kodieren: Da dies ein verschiebbares Fenster ist, kann es sich gelegentlich auch woanders befinden, etwa als Lasche neben dem Paket-Explorer! Dies ist nur eine sehr, sehr kurze Einführung in die Test-getriebene Entwicklung. Für weitere Details vgl. [Beck03]. 7
8 package factorial; public class Factorial { public int compute (int number) { if (number == 0) return 1; else return number * compute (number - 1); Nun führst du die Tests noch einmal aus, und voilà: der Balken ist grün, die Tests waren erfolgreich (vgl. 3). Unsere Aufgabe ist also geschafft. Oder nicht? Abbildung 3: JUnit-Fenster mit erfolgreichen Tests 3 Mehr über Testfälle 3.1 Trennen von Initialisierung und Auswertung Wenn du dir die Testfälle noch einmal genauer anschaust, wirst du feststellen, dass in jedem einzelnen Testfall ein Factorial-Objekt erzeugt wird, um die Fakultät zu berechnen. Weil der auszuführende Programmcode zur Erzeugung des Objekts in jeder Testmethode derselbe ist, bietet es sich an, die Erzeugung herauszuziehen und in eine eigene Methode zu verlagern. Wir nennen diese Methode setup und rufen sie dann in jeder Testmethode auf: package factorial; import static org.junit.assert.*; import org.junit.test; public class FactorialTest { private Factorial m_factorial; public void setup () { m_factorial = new Factorial (); public void fac0 () { setup (); assertequals (1, m_factorial.compute (0)); public void fac1 () { setup (); 8
9 assertequals (1, m_factorial.compute (1)); public void fac2 () { setup (); assertequals (2, m_factorial.compute (2)); public void fac3 () { setup (); assertequals (6, m_factorial.compute (3)); public void fac4 () { setup (); assertequals (24, m_factorial.compute (4)); public void fac10 () { setup (); assertequals ( , m_factorial.compute (10)); Bevor wir irgendetwas weiter an dem Quelltext verändern, müssen wir die Tests laufen lassen. Warum? Bei jeder Änderung können sich Fehler einschleichen! Deshalb haben wir uns die Testfälle gebastelt: damit wir Fehler finden! Auch wenn Testfälle geändert werden, wollen wir sichergehen, dass keine unerwünschten Nebeneffekte (an die wir nicht gedacht haben) auftreten. Deshalb führen wir die Tests aus und fühlen uns gut, weil wir den grünen Balken sehen. Jetzt wirst du sicherlich einwenden, dass in diesem speziellen Fall durch die Refaktorisierung nicht viel gewonnen ist: Der Quelltext ist wesentlich länger geworden. Dieser Einwand ist berechtigt, wird aber durch den offensichtlichen strukturellen Gewinn kompensiert: Nun ist die Testfall-Initialisierung strikt von der Testfall-Auswertung getrennt. Dies ist ein großer Vorteil, weil JUnit diese Trennung von initialisierenden, auswertenden (und abschließenden, s. u.) Operationen von Haus aus unterstützt. Wenn wir nämlich der oben eingefügten Methode setup einfach die spendieren, können wir uns die ganzen Aufrufe dieser Methode sparen, weil JUnit vor (= before!) dem Ausführen jeder einzelnen Testfall-Methode diese Methode aufrufen wird und das völlig automatisch! Um die auch nutzen zu können, müssen wir sie jedoch vorher noch importieren. Dies dient lediglich dem Zweck, schreiben zu müssen. Wir verändern also den Quelltext wie folgt: package factorial; import static org.junit.assert.*; import org.junit.test; import org.junit.before; public class FactorialTest { private Factorial public void setup () { m_factorial = new Factorial (); 9
10 public void fac0 () { //setup (); assertequals (1, m_factorial.compute (0)); public void fac1 () { //setup (); assertequals (1, m_factorial.compute (1)); public void fac2 () { //setup (); assertequals (2, m_factorial.compute (2)); public void fac3 () { //setup (); assertequals (6, m_factorial.compute (3)); public void fac4 () { //setup (); assertequals (24, m_factorial.compute (4)); public void fac10 () { //setup (); assertequals ( , m_factorial.compute (10)); (Die Aufrufe von setup kannst du natürlich auch löschen; sie sind in diesem Beispiel auskommentiert, damit du im Dokument erkennen kannst, dass an dieser Stelle eine Veränderung stattgefunden hat.) Nun lässt du abermals alle Testfälle durchlaufen und siehst am grünen Balken, dass die durchgeführten Änderungen keinen negativen Einfluss auf die Richtigkeit der Tests haben. Der Test-Code ist jedoch übersichtlicher geworden, da Erzeugung und Benutzung der zu testenden Objekte sichtbar voneinander getrennt wurden: Die Initialisierung der Testfälle steht in der setup-methode, die Ausführung der Testfälle ist in den test...-methoden zu finden. 3.2 Testfälle und Ausnahmen Wenn Programmcode getestet werden soll, der in der Lage ist, Ausnahmen auszulösen, ist etwas mehr (aber nicht wirklich viel) Arbeit notwendig. Zuerst musst du zwischen zwei möglichen Situationen unterscheiden: Du möchtest Programmcode testen, der eigentlich keine Ausnahme auslösen sollte. Falls eine Ausnahme dennoch auftritt, ist der Testfall fehlgeschlagen. Du möchtest Programmcode testen, der eine Ausnahme auslösen soll. Falls keine Ausnahme auftritt, ist der Testfall fehlgeschlagen. 10
11 3.2.1 Unerwünschte Ausnahmen Der erste Fall ist der einfachere. Hier erweiterst du deine Test-Methode einfach um eine passende throws-klausel. Gesetzt den Fall, wir haben den folgenden Testfall: import static org.junit.assert.*; import org.junit.test; public class MyClassTest { public void testdosomething () { assertequals (42, new MyClass ().dosomething ()); Nehmen wir an, dass dosomething eine Ausnahme vom Typ MyException auslösen könnte (aber nicht sollte), so erweitern wir die Methode um die passende throws-klausel: import static org.junit.assert.*; import org.junit.test; public class MyClassTest { public void testdosomething () throws MyException { assertequals (42, new MyClass ().dosomething ()); Das war auch schon alles Erwünschte Ausnahmen Gelegentlich kommt es vor, dass du in einem Testfall prüfen möchtest, ob eine bestimmte Ausnahme ausgeworfen wird. Normalerweise erwartest du, dass keine Ausnahmen während eines Testfalls auftreten (ansonsten kommt es ja bekanntlich zu einem Fehler). Um das Gegenteil zu erreichen, d. h. die Existenz einer Ausnahme als richtig und die Abwesenheit derselben als falsch zu behandeln, müssen wir etwas mehr tun als gewöhnlich. Gesetzt den Fall, wir haben den folgenden (noch nicht fertigen) Testfall: import static org.junit.assert.*; import org.junit.test; public class MyOtherClassTest { public void testthrowexception () { new MyOtherClass ().throwexception (); Wir wissen, dass throwexception eine Ausnahme vom Typ MyOtherException auswerfen soll, und wir wollen dies überprüfen. Dazu müssen wir die Anweisung oder den Code-Block, der die Ausnahme generiert, in einen try/catch-block einschließen, um die die Ausnahme aufzufangen: import static org.junit.assert.*; import org.junit.test; public class MyOtherClassTest { 11
12 public void testthrowexception () { try { new MyOtherClass ().throwexception (); catch (MyOtherException e) { // alles in Ordnung! Nun überlegen wir: Wenn die Ausnahme ausgeworfen wird, geraten wir unweigerlich in den catch-block. Da in diesem Fall jedoch alles in Ordnung ist (schließlich haben wir die Ausnahme erwartet), bleibt der Anweisungsteil im catch-block leer. Wenn jedoch keine Ausnahme ausgeworfen wird, beendet sich der Testfall bis jetzt ebenfalls auf natürlichem Wege. Das ist schlecht, denn so bekommt JUnit nicht mit, dass eigentlich eine Störung aufgetreten ist (eine erwartete Ausnahme ist nicht eingetreten). Deshalb ändern wir den obigen Code leicht ab und rufen nach der Anweisung, die eine Ausnahme auswerfen soll, eine JUnit-Operation auf, um einen Fehler zu melden: import static org.junit.assert.*; import org.junit.test; public class MyOtherClassTest { public void testthrowexception () { try { new MyOtherClass ().throwexception (); fail ("MyOtherException expected"); catch (MyOtherException e) { // alles in Ordnung! Die Methode fail, die hier aufgerufen wird, dient dazu, einen Testfall mit einem Fehler zu beenden. Optional kann man (wie im Beispiel) eine zusätzliche Nachricht übergeben, um den ausgelösten Fehler genauer zu kennzeichnen.12 4 Zusammenfassung Herzlichen Glückwunsch! Du hast die JUnit-Einführung für LOMF-Programmierer durchgearbeitet und verstanden, wie du die aus LOMF gewohnte Test-getriebene Entwicklung auf Java übertragen kannst. Neben grundlegenden Konzepten wie TestCases und asserts hast du auch gelernt, wie du die Initialisierung von Testfällen auslagern kannst. Auch weißt du jetzt, wie du in deinen Testfällen mit Ausnahmen umgehen kannst. Nun bist du hoffentlich fit für deine nächsten Java-Projekte. Viel Spaß! 12 Es gibt auch noch eine andere Möglichkeit, dieses Problem zu lösen, nämlich mit Hilfe des Parameters expected Parameters der Annotation. Diese Vorgehensweise ist jedoch nicht empfehlenswert, da man keinen Einfluss darauf hat, in welchen Code-Abschnitten der Test-Methode die Ausnahme erwartet wird und in welchen nicht. 12
13 Anhang A: Erstellung eines Java-Projekts mit JUnit-Unterstützung Das Anlegen eines Java-Projekts mit JUnit-Unterstützung läuft prinzipiell genauso ab wie das Anlegen eines jeden anderen Java-Projekts: Zuerst musst du über das Menü (oder über die Symbolleiste) den entsprechenden Punkt auswählen (4) und dann den Projektnamen vergeben. Anschließend ist es wichtig, nicht die Schaltfläche Finish, sondern die Schaltfläche Next auszuwählen (5). Anschließend musst du unter Libraries (6) eine neue Library hinzuzufügen (7), nämlich JUnit (8). Du solltest die Version 4 auswählen (9), weil diese Version in diesem Dokument beschrieben wird. Nach zweimaliger Auswahl der Schaltfläche Finish (10 und 11) ist das Java-Projekt samt JUnitUnterstützung in eclipse vorhanden (12). Abbildung 4: Anlegen eines Java-Projekts, Teil 1 13
14 14
15 15
16 16
17 Abbildung 9: Integration der JUnit-Unterstützung: JUnit-Version auswählen 17
18 18
19 Anhang B: Versionshistorie Version Datum Änderung erste Version Anhang A hinzugefügt, optische Verbesserungen kleine Verbesserungen Thema Ausnahme-Behandlung hinzugefügt, optische Verbesserungen kleinere Korrekturen Umstellung auf JUnit Layout korrigiert, Schriftarten ersetzt Tabellenunterschrift korrigiert, fehlende Test-Annotationen ergänzt Literaturverzeichnis [GHJV95] [Beck03] Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John: Design Patterns, 1995, Addison-Wesley Beck, Kent: Test-Driven Development, 2003, Addison-Wesley 19
Testen mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrPrimzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
MehrKapitel 4 Die Datenbank Kuchenbestellung Seite 1
Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung
MehrZwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
MehrKulturelle Evolution 12
3.3 Kulturelle Evolution Kulturelle Evolution Kulturelle Evolution 12 Seit die Menschen Erfindungen machen wie z.b. das Rad oder den Pflug, haben sie sich im Körperbau kaum mehr verändert. Dafür war einfach
MehrWordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten
Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele
ONLINE-AKADEMIE Ziele Wenn man von Menschen hört, die etwas Großartiges in ihrem Leben geleistet haben, erfahren wir oft, dass diese ihr Ziel über Jahre verfolgt haben oder diesen Wunsch schon bereits
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrCSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung
Kapitel 1 Die Vorbereitung Vorgängerversionen. Bald darauf folgte dann schon die Version 4, die mit einer kleinen Bearbeitung bis vor Kurzem 15 Jahre unverändert gültig war. All das, was du die letzten
MehrZahlen auf einen Blick
Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.
MehrMediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrSoftware-Engineering und Optimierungsanwendungen in der Thermodynamik
Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung
MehrMind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999
Mind Mapping am PC für Präsentationen, Vorträge, Selbstmanagement von Isolde Kommer, Helmut Reinke 1. Auflage Hanser München 1999 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21222 0 schnell
MehrAnleitung für Autoren auf sv-bofsheim.de
Anleitung für Autoren auf sv-bofsheim.de http://www.sv-bofsheim.de 1 Registrieren als Benutzer sv-bofsheim.de basiert auf der Software Wordpress, die mit einer Erweiterung für ein Forum ausgestattet wurde.
MehrProofreading Was solltest Du beim Korrekturlesen beachten?
Proofreading Was solltest Du beim Korrekturlesen beachten? Der Zweck einer Korrektur Wenn der Kunde in seiner Übersetzung Fehler entdeckt, macht das keinen guten Eindruck. Daher müssen wir dafür sorgen,
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Mehr1. Was ihr in dieser Anleitung
Leseprobe 1. Was ihr in dieser Anleitung erfahren könnt 2 Liebe Musiker, in diesem PDF erhaltet ihr eine Anleitung, wie ihr eure Musik online kostenlos per Werbevideo bewerben könnt, ohne dabei Geld für
MehrViele Bilder auf der FA-Homepage
Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet
MehrDer Klassenrat entscheidet
Folie zum Einstieg: Die Klasse 8c (Goethe-Gymnasium Gymnasium in Köln) plant eine Klassenfahrt: A Sportcamp an der deutschen Nordseeküste B Ferienanlage in Süditalien Hintergrundinfos zur Klasse 8c: -
MehrZum Konzept dieses Bandes
Zum Konzept dieses Bandes Zu jedem der 16 Kapitel zu Sach- und Gebrauchstexten erfolgt das Bearbeiten der Texte mithilfe von Lesestrategien in drei Schritten: 1. Schritt: Informationstext kennenlernen
MehrPunkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software
Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrKreativ visualisieren
Kreativ visualisieren Haben Sie schon einmal etwas von sogenannten»sich selbst erfüllenden Prophezeiungen«gehört? Damit ist gemeint, dass ein Ereignis mit hoher Wahrscheinlichkeit eintritt, wenn wir uns
MehrKomponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009
Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger
Mehr4. BEZIEHUNGEN ZWISCHEN TABELLEN
4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrDas sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
MehrGleichungen Lösen. Ein graphischer Blick auf Gleichungen
Gleichungen Lösen Was bedeutet es, eine Gleichung zu lösen? Was ist überhaupt eine Gleichung? Eine Gleichung ist, grundsätzlich eine Aussage über zwei mathematische Terme, dass sie gleich sind. Ein Term
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrWelche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.
Wir wollen mit Ihnen Ihren Auftritt gestalten Steil-Vorlage ist ein österreichisches Start-up mit mehr als zehn Jahren Erfahrung in IT und Kommunikation. Unser Ziel ist, dass jede einzelne Mitarbeiterin
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrSpielmaterial. Hallo! Ich bin der kleine AMIGO und zeige euch, wie dieses Spiel funktioniert. Viel Spaß! von Liesbeth Bos
Kissenschlacht_Regel.qxp:Layout 1 19.05.2010 12:00 Uhr Seite 1 Hallo! Ich bin der kleine AMIGO und zeige euch, wie dieses Spiel funktioniert. Viel Spaß! von Liesbeth Bos Spieler: 2 4 Personen Alter: ab
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
MehrFBA 6-16, Version für Jugendliche
Nr: _/Ki Ich bin DEDI, der Detektiv, der mit der Lupe genau schaut, was wir im Alltag machen. FBA 6-16, Version für Jugendliche Hallo Vielen Dank, dass Du mitmachst. Wir (das Forscherteam und unser grüner
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrErstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])
3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere
MehrInformatik Kurs Simulation. Hilfe für den Consideo Modeler
Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke
MehrNina. bei der Hörgeräte-Akustikerin. Musterexemplar
Nina bei der Hörgeräte-Akustikerin Nina bei der Hörgeräte-Akustikerin Herausgeber: uphoff pr-consulting Alfred-Wegener-Str. 6 35039 Marburg Tel.: 0 64 21 / 4 07 95-0 info@uphoff-pr.de www.uphoff-pr.de
MehrS/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine
PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so
MehrWindows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1
Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen
MehrCOMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK
COMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK WAS SIND SERIENBRIEFE? Bei einem Serienbrief handelt es sich um eine Art Word Vorlage, bei der das gleiche Dokument mehrmals gedruckt werden muss,
MehrJederzeit Ordnung halten
Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das
MehrDiese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3
Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer Inhalt Erste Anmeldung. Schritt 1: Anmeldung..2 Schritt 2: Passwort setzen 3 Schritt 3: Nachträgliches Ändern des Passworts..4 Schreiben
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrErstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
MehrErweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
MehrOECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland
OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben
MehrDatenbanken Kapitel 2
Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,
MehrHandbuch Fischertechnik-Einzelteiltabelle V3.7.3
Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3
MehrInformationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
MehrB: bei mir war es ja die X, die hat schon lange probiert mich dahin zu kriegen, aber es hat eine Weile gedauert.
A: Ja, guten Tag und vielen Dank, dass du dich bereit erklärt hast, das Interview mit mir zu machen. Es geht darum, dass viele schwerhörige Menschen die Tendenz haben sich zurück zu ziehen und es für uns
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrMORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH
MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
MehrBlog Camp Onlinekurs
Blog Camp Reichenberger Str. 48 DE-10999 Berlin mail@blog-camp.de www.blog-camp.de +49 (0) 152 36 96 41 83 Blog Camp Onlinekurs #IchLiebeBloggen Werde erfolgreicher Blogger www.blog-camp.de mail@blog-camp.de
MehrRepetitionsaufgaben Wurzelgleichungen
Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen
MehrWas ist Sozial-Raum-Orientierung?
Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume
MehrStarten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.
Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrEAP. Employee Administration Platform
EAP Employee Administration Platform Inhalt 1. Plattform öffnen...2 2. Registrierung...2 3. Login...6 4. Links...8 5. Für ein Event anmelden...9 6. Persönliche Daten ändern... 11 7. Logout... 12 8. Benachrichtigungen...
MehrFit in Deutsch 2. Für den Prüfungsteil Schreiben hast du 30 Minuten Zeit. In diesem Teil musst du auf eine Anzeige mit einem Brief antworten.
Information Für den Prüfungsteil hast du 30 Minuten Zeit. In diesem Teil musst du auf eine Anzeige mit einem Brief antworten. Du bekommst vier Inhaltspunkte. Zu jedem Punkt musst du ein bis zwei Sätze
MehrPapierverbrauch im Jahr 2000
Hier findest du Forschertipps. Du kannst sie allein oder in der kleinen Gruppe mit anderen Kindern bearbeiten! Gestaltet ein leeres Blatt, schreibt Berichte oder entwerft ein Plakat. Sprecht euch in der
MehrLernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation
Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation Einführung Mit welchen Erwartungen gehen Jugendliche eigentlich in ihre Ausbildung? Wir haben zu dieser Frage einmal die Meinungen von Auszubildenden
MehrAnleitung zum Hochladen von Bilddateien in die Bilderverwaltung des CVJM Mössingen
Anleitung zum Hochladen von Bilddateien in die Bilderverwaltung des CVJM Mössingen Schon im Voraus herzlichen Dank, dass du Bilder in die Bilderverwaltung hoch laden möchtest. Das ist einfacher als du
MehrBIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen
BIA-Wissensreihe Teil 4 Mind Mapping Methode Bildungsakademie Sigmaringen Inhalt Warum Mind Mapping? Für wen sind Mind Maps sinnvoll? Wie erstellt man Mind Maps? Mind Mapping Software 3 4 5 7 2 1. Warum
MehrFortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
MehrBereich METIS (Texte im Internet) Zählmarkenrecherche
Bereich METIS (Texte im Internet) Zählmarkenrecherche Über die Zählmarkenrecherche kann man nach der Eingabe des Privaten Identifikationscodes einer bestimmten Zählmarke, 1. Informationen zu dieser Zählmarke
MehrDie besten Excel-Tastenkombinationen im Überblick
Die besten Excel-Tastenkombinationen im Überblick Erfahrungsgemäß sind es nicht unbedingt die umfangreichen Tipps, die den Nutzen haben. So kann dir häufig schon eine kleine Hilfe bei der täglichen Arbeit
MehrLDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH
LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH MATESO GmbH Daimlerstraße 7 86368 Gersthofen www.mateso.de Dieses Dokument beschreibt die Konfiguration
MehrTESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!
9 TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE! An den SeniorNETclub 50+ Währinger Str. 57/7 1090 Wien Und zwar gleich in doppelter Hinsicht:!"Beantworten Sie die folgenden Fragen und vertiefen Sie damit Ihr
MehrPersönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl
Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon
MehrInstallation und Inbetriebnahme von Microsoft Visual C++ 2010 Express
Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrDas RSA-Verschlüsselungsverfahren 1 Christian Vollmer
Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der
Mehr50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte
50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrHinweise zum Übungsblatt Formatierung von Text:
Hinweise zum Übungsblatt Formatierung von Text: Zu den Aufgaben 1 und 2: Als erstes markieren wir den Text den wir verändern wollen. Dazu benutzen wir die linke Maustaste. Wir positionieren den Mauszeiger
MehrNina. 2. Ninas Mutter lebt nicht mit Nina und der Familie zusammen. Warum könnte das so sein? Vermute. Vielleicht ist sie. Möglicherweise.
Seite 1 von 6 1. Hier siehst du Bilder von Nina und den Personen, mit denen Nina zusammenwohnt. Schau dir die Szene an und versuche, die Zitate im Kasten den Bildern zuzuordnen. Zu jedem Bild gehören zwei
MehrUrlaubsregel in David
Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5
MehrDokumentation. Serienbriefe mit Galileo-Daten im Word erstellen
Dokumentation Serienbriefe mit Galileo-Daten im Word erstellen K:\Dokumentationen\Galileo bibwin Kunden Dokus\Kurz-Doku Seriendruck.doc 04.03.2008 1 Ablauf...2 2 Kundenadressen...3 3 Datenexport...4 3.1
MehrHohe Kontraste zwischen Himmel und Landschaft abmildern
PhotoLine-Bildbearbeitung Erstellt mit Version 16.11 In diesem Beispiel möchte ich zeigen, wie ich zur Zeit Landschaftsbilder mit hohen Kontrasten bearbeite. "Zur Zeit" deshalb, weil sich das natürlich
MehrAnleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)
Seite 1/7 Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Hier sehen Sie eine Anleitung wie man einen Serienbrief erstellt. Die Anleitung
MehrTesten mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls
Testen von Java-Code mit JUnit ÿmotivation ÿjunit-testklassen ÿjunit-testfälle ÿstruktur eines Testfalls Henning Wolf APCON Workplace Solutions GmbH wolf@jwam.de Motivation: Werkzeugunterstützung für Tests
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
Mehr104 WebUntis -Dokumentation
104 WebUntis -Dokumentation 4.1.9.2 Das elektronische Klassenbuch im Betrieb Lehrer Aufruf Melden Sie sich mit Ihrem Benutzernamen und Ihrem Passwort am System an. Unter den aktuellen Tagesmeldungen erscheint
MehrVergleichsarbeiten in 3. Grundschulklassen. Mathematik. Aufgabenheft 1
Vergleichsarbeiten in 3. Grundschulklassen Mathematik Aufgabenheft 1 Name: Klasse: Herausgeber: Projekt VERA (Vergleichsarbeiten in 3. Grundschulklassen) Universität Koblenz-Landau Campus Landau Fortstraße
MehrAufklappelemente anlegen
Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie
Mehr6.2 Scan-Konvertierung (Scan Conversion)
6.2 Scan-Konvertierung (Scan Conversion) Scan-Konvertierung ist die Rasterung von einfachen Objekten (Geraden, Kreisen, Kurven). Als Ausgabemedium dient meist der Bildschirm, der aus einem Pixelraster
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrDeine Meinung ist wichtig. Informationen für Kinder und Jugendliche zur Anhörung
Deine Meinung ist wichtig Informationen für Kinder und Jugendliche zur Anhörung Text und Gestaltung Dr. phil. Ruth Donati, Psychologin FSP Lic. phil. Camille Büsser, Psychologe FSP unter Mitwirkung von:
Mehrecaros2 - Accountmanager
ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf
MehrWorkshop: Wie ich mein Handikap verbessere erfolgreich Leben mit Multiple Sklerose!
INTEGRA 7.-9.Mai 2014 Gernot Morgenfurt - Weissensee/Kärnten lebe seit Anfang der 90iger mit MS habe in 2002 eine SHG (Multiple Sklerose) gegründet und möchte viele Menschen zu einer etwas anderen Sichtweise
Mehr