fh-hof tools richard göbel. fh-hof tools für die veranstaltung junit: testen ant: build-tool...

33
FH-Hof Tools Richard Göbel

Upload: jeremius-kaseman

Post on 05-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Tools

Richard Göbel

Page 2: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Tools für die Veranstaltung

JUnit: Testen

ANT: Build-Tool

Eclipse: Entwicklungsumgebung

Page 3: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

JUnit

JUnit unterstützt automatisierte Softwaretests

Junit ermöglicht

Blackbox Tests

Whitebox Tests auf Methodenebene

Junit instrumentiert nicht den Programmcode,

um den Abdeckungsgrad eines Tests

festzustellen

Zwei neue Themen:

Annotations

Import statischer Funktionen und Variablen

Page 4: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Annotation

Einfügen von Zusatzinformationen in Quellcode

(seit Version 1.5)

Annotationen:

beginnen mit dem Zeichen @ . . .

. . . werden von dem Compiler nicht

übersetzt . . .

. . . geben aber Zusatzinformation für Tools

während Übersetzung, "Deployment" oder zur

Laufzeit

Page 5: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Compileranweisung @SuppressWarnings

public class TestKlasse

{

@SuppressWarnings("unchecked")

LinkedList genList (int n)

{

LinkedList list = new LinkedList();

for (int i = 0; i < n; i++) list.add("");

return list;

}

}

Page 6: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Compileranweisung @Override

public class MyWindowListener extends

WindowAdapter

{

@Override

// windowClosing waere richtig

public void windoclosing(WindowEvent e)

{

System.exit(0);

}

}

Page 7: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Compileranweisung @Deprecated

public class TestKlasse

{

@Deprecated

void veryOldFunction ()

{

. . .

}

}

Page 8: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Definition einer eigenen Annotation

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)

@interface MethodenAnnotation

{

String erzeugtVon();

int version() default 1;

String[] geaendertVon();

}

Page 9: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Anwendung der Annotation

@MethodenAnnotation (

erzeugtVon="Hans",

version=1,

geaendertVon= { "Elke" , "Joe" , "Mary" })

void someFunction ()

{

. . .

}

Page 10: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Abfrage der Annotation zur Laufzeit

Class cl = Class.forName("TestKlasse");

Method me =

cl.getDeclaredMethod("someFunction");

Class an = Class.forName("MethodenAnnotation");

MethodenAnnotation

ma = (MethodenAnnotation)

me.getAnnotation(an);

System.out.println(ma.erzeugtVon());

Page 11: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Import für JUnit

Import von Klassen des Package "junit":

import org.junit.*;

Import statischer Elemente der Klassen

"Assert" und "JUnitCore"

import static org.junit.Assert.*;

import static org.junit.runner.JUnitCore.*;

Page 12: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Einsatz vonJUnit

JUnit

Open Source Software

IBM's Common Public License Version 0.5

verfügbar durch SourceForge: http://junit,org

Anwendung

Realisierung eines beliebigen Java-Programms

(wie bisher)

JAR-Datei in den Classpath eintragen (z.B. junit-

4.4.jar)

Implementierung zusätzlicher Testklassen

Start der Tests

java org.junit.runner.JUnitCore TestClass1, … 

Page 13: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiele für eine zu testende Klasse

class Coordinate {

int x = 0, y = 0;

void setX(int x) {this.x = x;}

void setY(int y) {this.y = y;}

int getX(int x) {return x;}

int getY(int y) {return y;}

}

Page 14: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für eine Testklasse I

class TestCoordinate {

Coordinate c;

@BeforeClass

public static void setUpBeforeClass() throws {

c = new Coordinate();

}

@Before

public void setUp() throws Exception {

c.x = 0;

c.y = 0;

}

. . .

Page 15: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für eine Testklasse II

. . .

@Test

public void checkX() throws Exception {

c.setX(3);

assertEquals("Error X", 3, c.getX());

assertEquals("Side effect Y", 0, c.getY());

}

@Test

public void checkY() throws Exception {

c.setY(5);

assertEquals("Error Y", 5, c.getY());

assertEquals("Side effect X", 0, c.getX());

}}

Page 16: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Annotationen für JUnit

After

AfterClass

Before

BeforeClass

Ignore

Test

Page 17: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Assertions

assertEquals

assertArrayEquals

assertNull, assertNotNull

assertFalse, assertTrue

assertSame, assertNotSame

assertThat

fail

Page 18: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Assumptions

static void

assumeNoException(java.lang.Throwable t)

static void assumeNotNull(java.lang.Object...

objects)

static <T> void assumeThat(T value,

org.hamcrest.Matcher<T> assumption)

static void assumeTrue(boolean b)

Page 19: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

ANT

"Build Tool" zur Erzeugung von

Programmsystemen

Akronym ANT

"Ameise"

"Another Neat Tool"

Home

http://jakarta.apache.org

Werkzeug für Java auf Java basierend

Page 20: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für Aktionen von Ant

Kompilieren

Testen

JAR-Dateien erzeugen

Javadoc generieren

Page 21: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Installation

Umgebungsvariablen

set ANT_HOME= . . .

set JAVA_HOME= . . .

set PATH= . . .;%ANT_HOME%\bin;

Anweisungen für ANT über XML-Datei: build.xml

Page 22: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für eine Build-Datei – Basis

<project name="PrimeProject"

default="execute"

basedir=".">

<target name="execute" depends="translate">

<java classname="Prime"/>

</target>

<target name="translate">

<javac srcdir="." includes="Prime.java"/>

</target>

</project>

Page 23: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für eine Build-Datei – Jar-Datei

<target name="pack" depends="translate">

<jar destfile="Prime.jar" basedir="."

includes="Prime.class">

<manifest>

<attribute name="Built-By"

value="richard"/>

<attribute name="Main-Class"

value="Prime"/>

</manifest>

</jar>

</target>

Page 24: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiel für eine Build-Datei – JUnit-Test

<target name="jtest" depends="translate">

<junit fork="no">

<formatter type="xml" extension=".xml"/>

<test name="TestPrime"/>

</junit>

</target>

Page 25: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiele Aufrufe von ANT

ant

ant translate

ant execute

ant jtest

ant pack

Page 26: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Basis

project

Attribut name: Bezeichnung

Attribut default: Default-Target

Attribut basedir: Basisverzeichnis

target : Menge von Aufgaben (Tasks)

Attribut name: Bezeichnung

Attribut depends: Abhängigkeiten

Attribut description: Kurzbeschreibung

task: zu erledigende Aufgaben für ein Target

Page 27: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Beispiele für Tasks

ant

concat

copy

jar

java

javac

delete

mail

move

rmic

sql

tstamp

Page 28: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Properties

Eine Property hat einen Namen und einen Wert

Zugriff auf den Wert einer Property innerhalb

eines Attributwerts über ${ . . . }

Beispiele für eingebaute Properties

basedir : absolute Pfad des "basedir"

ant.file: absolute Pfad der Build-Datei

ant.version: Version von Ant

ant.project.name: aktueller Projektname

ant.java.version: aktuelle Java-Version

Page 29: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Build-Datei mit Properties I

<project name="PrimeProject" default="pack" basedir=".">

<property name="source" location="src"/>

<property name="class" location="class"/>

<target name="init">

<tstamp/>

<mkdir dir="${class}"/>

</target>

<target name="translate" depends="init">

<javac srcdir="${source}" destdir="${class}"/>

</target>

. . .

Page 30: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Build-Datei mit Properties II

. . .

<target name="pack" depends="translate">

<jar destfile="Prime${DSTAMP}.jar" basedir="${class}">

<manifest>

<attribute name="Built-By" value="richard"/>

<attribute name="Main-Class" value="Prime"/>

</manifest>

</jar>

</target>

<target name="clean">

<delete dir="${class}"/>

</target>

</project>

Page 31: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Bedingte Erzeugung von Targets

<target name="jtest" depends="translate">

<junit fork="no" errorproperty="testfail">

. . . .

</junit>

</target>

<target name="pack" depends="translate,jtest" unless="testfail">

<jar destfile="Prime${DSTAMP}.jar" basedir="${class}">

<manifest>

. . .

</manifest>

</jar>

</target>

Page 32: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Hierarchisches Erzeugen von Systemen

Die einzelnen Build-Dateien folgen der

Package-Struktur

Beispiel

packages a, b, a.c, a.d, a.c.e

Build-Dateien für a, b, a.c, a.d, a.c.e

Aufruf untergeordneter Build-Dateien aus der

Build-Datei des jeweils übergeordneten

Package

Page 33: FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung

FH-Hof

Task Ant

antfile: Build-Datei (Default build.xml)

dir: Basisverzeichnis

target: welches Target soll erzeugt werden

output: Dateiname für Ausgabe dieses

Kommandos

inheritAll: Weitergabe aller Properties (Default:

true)

inheritRefs: Weitergabe aller Referenzen

(Default: false)