# Testen & Code Analyse



## Andi_CH (5. Apr 2011)

Es gibt es sicher, aber was ist unkompliziert zu benutzen und zu verstehen? Was setzt ihr selbst ein?

Ich suche ein Tool welches analysiert wie gut die Coverage meiner Tests ist.
Ziel ist - Zitat "100% path coverage ohne die Fehlerbehandlung und möglichst viele der Fehlerpfade"
(Am Anfang stand da 100% ohne Ausnahme )

Der Grund warum ich hier frage?
Ich gebe zu, ich bin zu faul die "Ungefähr 155'000 Ergebnisse" die google für die Begriffe "junit coverage analyse" liefert, alle zu prüfen


----------



## Antoras (5. Apr 2011)

EclEmma - Java Code Coverage for Eclipse

Nach der Installation einfach Coverage As > JUnit Test auswählen. Einfacher geht es wohl nimmer.


----------



## maki (5. Apr 2011)

Da fallen mir ein: ECLEmma, Cobertura, Clover (kostenpflichtig)


----------



## fastjack (5. Apr 2011)

Emma kann ich auch empfehlen, wir arbeiten rund 3 Jahre damit.


----------



## Wildcard (5. Apr 2011)

Übrigens wird JaCoCo wird der Nachfolger von (Ecl)Emma:
JaCoCo/Proposal - Eclipsepedia


----------



## Andi_CH (5. Apr 2011)

Die Emma sieht wirklich gut aus.

Aehm ich hab das Subjekt etwas angepasst - wie prüfe ich ob eine Exception kommt?
Das Beispiel


```
import junit.framework.TestCase;

public class TestException extends TestCase {

	@Test (expected=IndexOutOfBoundsException.class) public void elementAt() {
		int[] intArray = new int[10];
		int i = intArray[20]; // Should throw IndexOutOfBoundsException
	}
}
```

sieht zwar nett aus, aber bei mir kommt die lapidare Meldung:
Type mismatch: cannot convert from Test to Annotation

Ausserdem verwirrt mich, dass woanders ausdrücklich steht dass die Testprozeduren *test*Xxx heissen müssen. Ist JUnit nicht gleich JUnit?


----------



## maki (5. Apr 2011)

JUnit 3 arbeitet mit Vererbung ([c]extends TestCase[/c]) und testXXX, JUnit mit Annotationen, solltest dich wohl entscheiden, vorzugsweise für JUnit 4 und Annotationen.


----------



## Andi_CH (5. Apr 2011)

Das würde ja direkt heissen, dass mit Eclipse 3.6 JUnit 3 mitinstalliert wird - hm - muss das morgen anpacken ...


----------



## fastjack (5. Apr 2011)

importiere mal das hier:


```
import org.junit.*; // fuer @Test
import static org.junit.Assert.*; // fuer die statischen Assertions
```

edit: und mach "extends TestCase" weg


----------



## maki (5. Apr 2011)

Andi_CH hat gesagt.:


> Das würde ja direkt heissen, dass mit Eclipse 3.6 JUnit 3 mitinstalliert wird - hm - muss das morgen anpacken ...


.. und JUnit 4.irgendetwas auch 

Man kann in der Run Config die JUnit Version umstellen, oder man nutzt gleich ein Buildsystem wie zB. Maven.


----------



## fastjack (5. Apr 2011)

in Eclipse 3.6 ist alles richtig, du mußt mindestens "org.junit.Test" importieren, für die Annotations.


----------



## Andi_CH (6. Apr 2011)

The import org.junit cannot be resolved

und das hat ja wohl nicht viel mit der run config zu tun - erst muss das ja durch den Compiler ...

Ganz offensichtlich weiss mein Eclipse 3.6 (3.5 auch) nichts von JUnit 4.
Beides sind Defaultinstallationen!

EDIT:
In den Projektproperties was JUnit 3 im Build Path- das habe ich gelöscht und JUnit 4 reingetan.
Die Fehlermeldung ist nun leicht verändert:

The import org.junit.test cannot be resolved

EDIT2:
Ich brauche wohl einen Kaffee :-(
import org.junit.Test; // Ich mag case sensitivity nicht!


----------

