Einführung in JUnit 4

Größe: px
Ab Seite anzeigen:

Download "Einführung in JUnit 4"

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

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

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen 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

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 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

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (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

Mehr

Kulturelle Evolution 12

Kulturelle 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

Mehr

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Wordpress: 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

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

ONLINE-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

Mehr

Einführung in die Java- Programmierung

Einfü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

Mehr

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

CSS-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

Mehr

Zahlen auf einen Blick

Zahlen 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.

Mehr

Mediator 9 - Lernprogramm

Mediator 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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-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

Mehr

Mind 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 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

Mehr

Anleitung für Autoren auf sv-bofsheim.de

Anleitung 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.

Mehr

Proofreading Was solltest Du beim Korrekturlesen beachten?

Proofreading 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,

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten 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

Ü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:

Mehr

1. Was ihr in dieser Anleitung

1. 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

Mehr

Viele Bilder auf der FA-Homepage

Viele 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

Mehr

Der Klassenrat entscheidet

Der 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: -

Mehr

Zum Konzept dieses Bandes

Zum 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

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 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

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

Kreativ visualisieren

Kreativ 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

Mehr

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009

Komponententest. 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

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. 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

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es 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

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das 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

Mehr

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Gleichungen 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

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. 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

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java 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

Mehr

Einführung in die Programmierung

Einfü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

Mehr

Anleitung über den Umgang mit Schildern

Anleitung ü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

Mehr

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Welche 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

Spielmaterial. Hallo! Ich bin der kleine AMIGO und zeige euch, wie dieses Spiel funktioniert. Viel Spaß! von Liesbeth Bos

Spielmaterial. 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

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie 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,

Mehr

FBA 6-16, Version für Jugendliche

FBA 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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen 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

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik 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

Mehr

Nina. bei der Hörgeräte-Akustikerin. Musterexemplar

Nina. 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

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/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

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. 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

Mehr

COMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK

COMPUTERIA 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,

Mehr

Jederzeit Ordnung halten

Jederzeit 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

Mehr

Diese 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. 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

Mehr

Praktikum 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. 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

Mehr

1 topologisches Sortieren

1 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

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen 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

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung 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

Mehr

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

OECD 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

Mehr

Datenbanken Kapitel 2

Datenbanken 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,

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch 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

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt 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

Mehr

B: bei mir war es ja die X, die hat schon lange probiert mich dahin zu kriegen, aber es hat eine Weile gedauert.

B: 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

Mehr

1 Vom Problem zum Programm

1 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

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE 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

Mehr

1 Mathematische Grundlagen

1 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.

Mehr

Blog Camp Onlinekurs

Blog 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

Mehr

Repetitionsaufgaben Wurzelgleichungen

Repetitionsaufgaben 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

Mehr

Was ist Sozial-Raum-Orientierung?

Was 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

Mehr

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Starten 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

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet 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

Mehr

EAP. Employee Administration Platform

EAP. 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...

Mehr

Fit 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.

Fit 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

Mehr

Papierverbrauch im Jahr 2000

Papierverbrauch 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

Mehr

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation

Lernerfolge 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

Mehr

Anleitung zum Hochladen von Bilddateien in die Bilderverwaltung des CVJM Mössingen

Anleitung 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

Mehr

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

BIA-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

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes 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

Mehr

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Bereich 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

Mehr

Die besten Excel-Tastenkombinationen im Überblick

Die 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

Mehr

LDAP 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 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

Mehr

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

TESTEN 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

Mehr

Persö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 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

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation 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

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle 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

Mehr

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Das 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

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. 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

Mehr

SEP 114. Design by Contract

SEP 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

Mehr

Hinweise zum Übungsblatt Formatierung von Text:

Hinweise 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

Mehr

Nina. 2. Ninas Mutter lebt nicht mit Nina und der Familie zusammen. Warum könnte das so sein? Vermute. Vielleicht ist sie. Möglicherweise.

Nina. 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

Mehr

Urlaubsregel in David

Urlaubsregel 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

Mehr

Dokumentation. Serienbriefe mit Galileo-Daten im Word erstellen

Dokumentation. 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

Mehr

Hohe Kontraste zwischen Himmel und Landschaft abmildern

Hohe 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

Mehr

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung 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

Mehr

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls

Testen 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

Mehr

Folge 18 - Vererbung

Folge 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,

Mehr

104 WebUntis -Dokumentation

104 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

Mehr

Vergleichsarbeiten in 3. Grundschulklassen. Mathematik. Aufgabenheft 1

Vergleichsarbeiten 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

Mehr

Aufklappelemente anlegen

Aufklappelemente 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

Mehr

6.2 Scan-Konvertierung (Scan Conversion)

6.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

Mehr

Vererbung & Schnittstellen in C#

Vererbung & 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

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 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

Mehr

Deine 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 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:

Mehr

ecaros2 - Accountmanager

ecaros2 - 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

Mehr

Workshop: Wie ich mein Handikap verbessere erfolgreich Leben mit Multiple Sklerose!

Workshop: 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