2012-03-26 3 views
1

Ich versuche, Junit Tests zu machen. Ich möchte sie starten, indem ich nach einer Methode im CMS-System frage. Weil ich Plugins teste. Das Problem ist, dass ich diese Ausnahme bekomme und ich weiß nicht warum. Naah Ich finde, dass das Problem sein könnte, dass ich JUnit 4.8.2 benutze, aber wenn ich den Test in Eclipse ausführe, hat alles gut funktioniert. Also kann ich keine Lösung finden. Hier ist der Fehler:Warum wird die Ausnahme "AssumptionViolatedException" abgerufen? Junit 4.8.2

org.apache.velocity.exception.MethodInvocationException: Invocation of method 
'getTest' in class nl.company.cms.three.viewtool.LoginViewTool threw exception 
java.lang.NoClassDefFoundError: org/junit/internal/AssumptionViolatedException at 
working/2a90929a-3fbf-43e9-9961-4a40279ec907_5c6e0bff-cfeb-44c6-86e2- 
a0ba40e7b66c.field[line 1, column 15] 

Hier ist der Code meiner Klasse und Testklasse: Klasse, die den Test starten ruft:

public String getTest(){ 
    Result r = org.junit.runner.JUnitCore.runClasses(MyTestClass.class); 
    if(r.getRunCount() > 0){ 
    String s = "Failcount = " + r.getFailureCount() + " // " + 
    r.getRunCount() + " in " + r.getRunTime() + " ms"; 
    System.out.println(r.getFailures().get(0).getTrace()); 
    System.out.println("Runcount: "+r.getRunCount()); 
    System.out.println("Runtime: "+r.getRunTime()); 
    System.out.println("Ignore count: "+r.getIgnoreCount()); 
    System.out.println("Failure count: "+ r.getFailureCount()); 
    return s; 
} 
else{ 
    return "Something ging kei verkeerd jonge!"; 
} 
} 

Prüfklasse:

public class MyTestClass { 

@Test 
public void testMultiply() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 40, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply1() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply2() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", "ASDF", tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply3() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply4() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 47, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply5() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 
} 

Antwort

2

Annahmen sind Ausnahmen, die JUnit abfangen wird, die aber den Test nicht bestehen. Diese sind für "diese Prüfung macht nur Sinn, wenn" Art von Fragen. Es gibt keinen Grund, Windows-Path-Tests auf einem Linux-System zum Beispiel fehlzuschlagen - sie können nicht erfolgreich sein, und wenn sie fehlschlagen, erhalten Sie einen Fehler, den Sie nicht beheben können, ohne die Tests zu deaktivieren.

Was ich seltsam finde, ist Velocity und JUnit in einer einzigen Fehlermeldung. Warum fährt Velocity JUnit?

Der Fehler bedeutet, dass der Klassenpfad nicht korrekt eingerichtet ist. Sie müssen also in den Classloader schauen, der zum Laden der Klasse verwendet wird, die die Methode getTest()

+0

Ich möchte die Tests über das CMS-System starten. Um nach den Tests im CMS-System zu fragen, müssen Sie Velocity-Code verwenden. Wenn ich es frage, bekomme ich diesen Fehler. Wenn ich die Methode zu etwas ändere, wo ich JUnit nicht verwende, funktioniert es. Aber wenn ich JUnit darin verwenden möchte, erhalte ich diesen Fehler. – Gynnad

+1

Fügen Sie JUnit dem Klassenpfad Ihres CMS-Systems hinzu. –

+0

Vielleicht funktioniert das! :) Ich teste es jetzt .. Und soweit ich sehen kann, funktioniert es! Ich werde einen größeren Test machen und wenn es funktioniert, werde ich Ihnen sehr danken! – Gynnad

1

enthält. Das Problem war, dass das CMS-System JUnit 3.8.2 verwendet und das Plugin JUnit 4.8.2 benötigt. Dies verursachte den Fehler, weil Java die neueste Version von JUnit verwendet und dies nicht das API der AssumptionViolatedException.

0

Diese Klasse implementiert eine Hamcrest-Klasse. Stellen Sie also sicher, dass Sie das Hamcrest-Core-Jar auf dem Klassenpfad haben.

Verwandte Themen