Wie installiere / benutze ich JUnit?

9

Ich habe JUnit auf meinem Ubuntu 11.04 installiert

sudo apt-get install junit

Dann erstellte eine Testdatei wie:

import org.junit.*;

public class TestBasicLinkedList {
  @Test public void testCanAdd(String[] args) {
    BasicLinkedList<Integer> list = new BasicLinkedList();
    list.add(new BasicListNode<Integer>(1));
    assertTrue(list.size() == 1);
    assertTrue(list.getFirst().getElement().equals(1));
  }
}

Dann habe ich versucht, im Terminal zu laufen

java org.junit.runner.JUnitCore TestBasicLinkedList.java

Bekam:

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: org.junit.runner.JUnitCore. Program will exit.

Wie verwende ich JUnit? Gibt es eine bessere kürzere Art der Verwendung als den langen Befehl java org.junit.runner.JUnitCore TestBasicLinkedList.java? Vielleicht so etwas wie junit *.Tests.javavielleicht?

Jiew Meng
quelle

Antworten:

11

Im Allgemeinen muss sich JUnit (genau wie jede Java-Bibliothek) in Ihrem Klassenpfad befinden. Ich weiß nicht genau, wo Ubuntu junitX.jar speichert, aber Sie möchten wahrscheinlich so etwas:

java -cp .:/usr/share/java/junit4-4.10.jar TestBasicLinkedList

Sie müssen TestBasicLinkedListzuerst kompilieren .

dsaff
quelle
2
/usr/share/java/junit.jarLinks zur neuesten junit3-Version, während /usr/share/java/junit4.jarLinks zur neuesten junit4-Version.
Daniel Kullmann
13

Dies ist ein grundlegender Testfall, um Sie zum Laufen zu bringen:

import junit.framework.TestCase;

public class TestBasicLinkedList extends TestCase {
  public void testTrue() {
    assertTrue(true);
  }
}

Die Testklasse sollte TestCase erweitern, und Testmethoden sollten mit "test" beginnen, keine Argumente akzeptieren und void zurückgeben.

Kompilieren:

javac -cp /usr/share/java/junit4.jar TestBasicLinkedList.java

Laufen:

java -cp /usr/share/java/junit4.jar:. org.junit.runner.JUnitCore TestBasicLinkedList

Dies ist für JUnit 4; JUnit 3 verwendet verschiedene Klassen zum Ausführen von Tests (versuchen Sie es mit junit.textui.TestRunner).

Daniel Kullmann
quelle
Danke .. java -cp /usr/share/java/junit.jar:. junit.textui.TestRunner TestBasicLinkedListfunktioniert für JUnit3. Das war hilfreich.
Jayesh
Tolle Erklärung, um sicherzustellen, dass die Grundlagen funktionieren! Thx a ton
Boris Däppen
1
sudo apt-get install junit4
  • /usr/share/java/junit4.jar ist ein Symlink zur neuesten junit4-Version.
  • /usr/share/java/junit.jar ist ein Symlink zur neuesten junit3-Version.

Wenn Ihre Anwendung Folgendes erfordert $JUNIT_HOME:

mkdir ~/junit
ln -s /usr/share/java/junit4.jar ~/junit
ln -s /usr/share/java/hamcrest-core.jar ~/junit
export JUNIT_HOME=~/junit

Wenn Ihre Anwendung es erfordert, dass es in Ihrem $CLASSPATH:

Kopieren Sie es einfach in eines der Klassenpfadverzeichnisse Ihrer Anwendung.

Gayan Weerakutti
quelle