3 Stimmen

Liste der Methodenaufrufe während der Ausführung eines Java Unit Tests

Ich habe eine Situation, in der ich wissen muss, welche Methoden von einem einzelnen JUnit-Test aufgerufen werden. Wenn ich zum Beispiel den folgenden Pseudocode habe:

public class UnitTest {    
  public main() {
    Circle c = new Circle()
    c.getArea()
  }
} 

public class Circle {
  public Circle() {
    ...
  }    
  public getArea() {
    ...
    getRadius()
  }
  private getRadius() {
    ...
  }
}

Die Methodenaufrufe der UnitTest Klasse folgen dieser Reihenfolge (obwohl ich für meine Zwecke weder die Reihenfolge beibehalten noch die Methode des Aufrufers kennen muss):

  1. UnitTest.main
  2. Kreis.Kreis
  3. Kreis.getArea
  4. Kreis.getRadius

Im Wesentlichen möchte ich wissen, welcher Teil des Programms tatsächlich in den JUnit-Tests ausgeübt wird. Ich denke, ich kann das dynamisch herausfinden, aber ich habe Schwierigkeiten, ein Tool oder einen Ansatz zu finden. Das Hauptproblem bei einigen der Tools, die ich gefunden habe, ist, dass sie oft sehr visuell sind (Benutzerinteraktion erforderlich, um die erforderlichen Daten zu extrahieren). Ich suche etwas, das mir nur eine Liste der Methoden (xml, Text, etc...) ohne den GUI-Aspekt liefert. Letztendlich versuche ich, dies für Testsuiten über einen Skripting-Ansatz zu automatisieren.

Die Ansätze, die ich mir vorstelle, wären entweder:

  • Verwendung eines Java-Agenten zum Ausdrucken der Klasse.Methode bei jedem Methodenaufruf.
  • Verfolgung mit Aspekten wie diese

Wenn es ein Tool gibt, das dies bereits kann, wäre das großartig. Wenn nicht, scheint es, dass ich auf dem richtigen Weg bin, mein Problem mit einem der von mir genannten Ansätze zu lösen.

Für jede Hilfe/jeden Vorschlag wären wir dankbar.

UPDATE-SOLVED Ich beschloss, Emma mit den folgenden Befehlen zu verwenden, um die Informationen über Methodenaufrufe zu extrahieren (es muss nur der Bericht für jede Methode mit einer Abdeckung von über 0 % analysiert werden):

emmarun -r xml                 // To output to XML
  -Dreport.sort=-method        // Sort method coverage in descending order
  -Dverbosity.level=silent     // Minimize script output
  -Dreport.metrics=method:1    // Flag any method with a 0% coverage
  -Dreport.columns=method,name // Only show the method and name columns
  -Dreport.depth=method        // Consider the data of method coverage

2voto

Paul Cager Punkte 1892

Sind Sie auf der Suche nach einem "Coverage"-Tool, wie z. B. Emma o Cobertura ?

1voto

mmounirou Punkte 699

Wenn Sie wissen wollen, welche Methoden von Ihrem Test aufgerufen werden aufgerufen werden, können Sie ein Code Coverage Tool verwenden wie cobertura o emma .

Beide bieten eine hervorragende Integration mit Maven, Ant und Eclipse und können einen xml- oder html-Bericht erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X