Junit-Tests in Java Klasse ausführen

TJava

Bekanntes Mitglied
Hallo , ich möchte gerne eine Liste von JUnit-Tests in einer Klasse ausführen und die Ergebebnisse in dieser Klasse verarbeiten. Wie geht so etwas? welche Befehle muss ich verwenden?

Ich erstelle im Moment ein Testframework und Junit ist auch Bestandteil des ganzen.
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ich gebe zu die Frage nicht ganz zu verstehen, aber...

In jUnit gibt es das Interface TestRunListener mit dem Du über Start, Stop, Ende und Status informiert wirst.
 

TJava

Bekanntes Mitglied
hehe ok.
Also die Tests liegen in einer Datenbank, von dort hole ich sie und möchte sie ausführen.
Die Tests müssen also automatisch ausgeführt werden und ausgewertet, nicht manuell.
Die Ergebnisse werden dann ausgewertet und in eine Html-Seite transformiert.
 

turtle

Top Contributor
Das ist ja das Schöne an Open-Source. Man kann sich anschauen, wie jUnit alles macht.

Wenn ich das richtig sehe, lädt jUnit eine Testklasse und ruft dann Contructor und Testmethoden via Reflection auf. Es sieht so aus, dass nur die Classdatei gefunden werden muss. Und diese kannst Du doch, hoffentlich, aus der DB laden, oder?

Wenn es "nur" um das Anwerfen eines Testlaufes geht, da solltest Du einen eigenen Runner schreiben können, der sich selbst als Listener registriert.
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Ok hast du dafür ein Beispiel, verstehe nicht ganz was du sagst :)
Ich gucke gerade die Junit-API an, es steht alles im Package org.junit.runner oder?


Also muss ich eine Instanz vom JunitCore erstellen und dort die run-Methode benutzen.
Der Methoden werden class Files übergeben.Ist das eine Collection die dort übergeben wird?


public Result run(java.lang.Class<?>... classes)

Run all the tests in classes.
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Und wie erstelle ich einen Test den ich dem Runner übergeben kann?

Result r = org.junit.runner.JUnitCore.runClasses(TestReader.class);
so geht es auch nur wie bekomme ich diese class?
 
Zuletzt bearbeitet:

turtle

Top Contributor
Nein, der Klassenname enthält keine Pfad-Angabe, sondern "nur" den Klassennamen. Diese Klasse muss über den Classpath gefunden werden können.
 

TJava

Bekanntes Mitglied
geht das auch anders?Der Ordner in den die Testklassen abgelegt werden ist variabel und wird vom Benutzer über eine Konfiguration angegeben.
 

TJava

Bekanntes Mitglied
Gibt es keinen einfacheren Weg, Junit Tests auszuführen?
Wenn es keine Class Files sind oder würde das Class-loader dann auch .java- Dateien umwandeln.
 

TJava

Bekanntes Mitglied
Java:
URL[] url = new URL[1];
		try {
			url[0] = new URL("./config/Junit/");
		} catch (MalformedURLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		URLClassLoader classloader = new URLClassLoader(url);

so aber irgendwie gehts nicht..
 

TJava

Bekanntes Mitglied
Also meinst du denn hier?
Ich teste das ganze morgen weiter.
Vielen Dank für deine Hilfe.

Java:
import java.io.*;
import java.net.*;
import java.util.*;

public class FileClassLoader extends /* superclass */ {

  private String root;

  public FileClassLoader (String rootDir) {
    if (rootDir == null)
      throw new IllegalArgumentException ("Null root directory");
    root = rootDir;
  }

  protected Class loadClass (String name, boolean resolve) 
    throws ClassNotFoundException {

    // Since all support classes of loaded class use same class loader
    // must check subclass cache of classes for things like Object

    // Class loaded yet?

    if (c == null) {
      // Convert class name argument to filename
      // Convert package names into subdirectories
      String filename = name.replace ('.', File.separatorChar) + ".class";

      try {

        // Load class data from file and save in byte array

        // Convert byte array to Class

        // If failed, throw exception

      } catch (IOException e) {
        throw new ClassNotFoundException ("Error reading file: " + filename);
      }
    }

    // Resolve class definition if approrpriate

    // Return class just created

    return /* ? */ ;
  }
  private byte[] loadClassData (String filename) 
      throws IOException {

    // Create a file object relative to directory provided
    File f = new File (root, filename);

    // Get size of class file
    int size = (int)f.length();

    // Reserve space to read
    byte buff[] = new byte[size];

    // Get stream to read from
    FileInputStream fis = new FileInputStream(f);
    DataInputStream dis = new DataInputStream (fis);

    // Read in data
    dis.readFully (buff);

    // close stream
    dis.close();

    // return data
    return buff;
  }
}
 

TJava

Bekanntes Mitglied
So habe nun den Classloader erstellt, aber es kommt eine Fehlermeldung

Error reading file: Test\java.class

Was mache ich bei den Angaben falsch?

Java:
FileClassLoader fileClassLoader = new FileClassLoader("./config/Junit");
		try {
			fileClassLoader.loadClass("Test.java");
									
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 

turtle

Top Contributor
Du musst natürlich in ./config/Junit die kompilierte Class-Datei von Test.java abgelegt haben.

Daher ist Dein Aufruf
fileClassLoader.loadClass("Test.java");
auch falsch und muss heissen
Java:
fileClassLoader.loadClass("Test");
 

TJava

Bekanntes Mitglied
mmh jetzt scheint er den Ordner nicht zu finden.
Da lag der Test ursprünglich mal (wrong name: de/usu/foxtrot/autoit/Test)
:bahnhof:

Java:
Exception in thread "main" java.lang.NoClassDefFoundError: AutoItConfigurationImplementationTest (wrong name: de/usu/foxtrot/autoit/Test)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
	at de.usu.foxtrot.junit.util.FileClassLoader.loadClass(FileClassLoader.java:38)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at de.usu.foxtrot.junit.JUnitExecutorImplementation.run(JUnitExecutorImplementation.java:43)
	at de.usu.foxtrot.autoit.CopyOfStart.main(CopyOfStart.java:33)
 

TJava

Bekanntes Mitglied
Der Ordner muss scheinbar im Class-Path zufinden sein? Das ist aber etwas schlecht, da dieser Ordner jedes mal anders ist. Was kann ich da tun?
 

turtle

Top Contributor
Schon wieder andere Namen... Warum änderst Du da ständig was?

Jedenfalls muss die class-Datei im Ordner de/usu/foxtrot/autoit zu finden sein. Der FileClassLoader gibt ja nur den Root-Folder an. Darunter muss natürlich die Klasse "package"-konform zu finden sein. Im Beispiel wird da kein Package angegeben
 

TJava

Bekanntes Mitglied
Das verstehe ich nicht ganz. Wieso muss sie dort zu finden sein? de/usu/foxtrot/autoit
Root Folder ist das Projekt ?
Ich möchte aber den Ordner mit den Tests an beliebiger Stelle erstellen können. Hast du dafür einen Tipp?
 

TJava

Bekanntes Mitglied
Aber wahrscheinlich wird das eh nicht funktionieren oder?
Es müssen ja die ganzen Klassen,Jars etc. vorhanden sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
P No JUnit tests found Allgemeine Java-Themen 5
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
M Junit Tests durchführen Allgemeine Java-Themen 18
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
C JUnit Tests Allgemeine Java-Themen 4
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
G JUnit Tests Allgemeine Java-Themen 7
S JUnit Tests für GUI / Oberflächen Allgemeine Java-Themen 2
M JUnit und dynamische Tests Allgemeine Java-Themen 11
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
B Junit Test Allgemeine Java-Themen 8
J Junit surefire: enrich test information Allgemeine Java-Themen 0
J Junit start surefire for manual testing Allgemeine Java-Themen 1
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
O Maven - JUnit - H2 Allgemeine Java-Themen 1
C JUNIT - ANT - build.xml Allgemeine Java-Themen 0
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P JUnit Allgemeine Java-Themen 2
B jUnit 4: Wie protokolliert man Testergebnisse? Allgemeine Java-Themen 1
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
M JUnit Test Suites Allgemeine Java-Themen 2
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
A JUnit/Hashcode Problem Allgemeine Java-Themen 5
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
N JUnit Allgemeine Java-Themen 13
M JVM Probleme JUnit Allgemeine Java-Themen 2
G NUnit Features in JUnit Allgemeine Java-Themen 2
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
A JUnit problem Allgemeine Java-Themen 9
T Organisation von Junit Testfällen? Allgemeine Java-Themen 2
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
1 JUnit Test Suit Allgemeine Java-Themen 2
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
M JUnit TestSuite erstellen Allgemeine Java-Themen 2
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G Testcases mit Junit auf private-Methode Allgemeine Java-Themen 7
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
T JUnit-Log auslesen Allgemeine Java-Themen 13
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
M Junit und Mocks Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
G JUnit Test Allgemeine Java-Themen 5
S JUnit - was mocken, was nicht? Allgemeine Java-Themen 3
S JUnit TesSuite und @Repeat Allgemeine Java-Themen 2
M Junit und Mocks bei JDBC Daos Allgemeine Java-Themen 8
M JUnit Problem mit AssertionFailedError Allgemeine Java-Themen 2
B Testfälle mit JUnit Allgemeine Java-Themen 4
S JUnit Allgemeine Java-Themen 15
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
S JUnit und EasyMock Allgemeine Java-Themen 7
B Wie alt ist JUnit? Allgemeine Java-Themen 2
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
7 JUnit: Testproblem. Allgemeine Java-Themen 23
G Ant + JUnit Allgemeine Java-Themen 2
F JUnit unter Ant Allgemeine Java-Themen 3
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
G testen mit JUnit? Allgemeine Java-Themen 3
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
M Ant + Junit + Testclass in Jar Allgemeine Java-Themen 3
G Junit 4 - TestSuite Allgemeine Java-Themen 6
B JUnit Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S JUnit will ins Netz! Allgemeine Java-Themen 2
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben