# JUnit problem



## andi_help (1. Mai 2012)

Hallo zusammen,

ich versuche mich gerade an JUnit 4 und habe hier ein Problem, zu dem ich bisher online nichts gefunden habe (wahrscheinlich verstehe ich es nur falsch)..
Also ich benutze Eclipse Java EE IDE Indigo, habe ein neues Projekt (HelloWorld") erstellt, junit-4.10.jar ist als externene JAR eingebunden, in der Runtime Umgebegung der VM steht -ea als Argument.
Wenn ich nun die Klassen HelloWorld 


```
public class HelloWorld {
	public String say(){
		return ("Hello World");
	}
}
```

und die Testklasse TestThatWeGetHelloWorldPrompt


```
import org.junit.Test;

import junit.framework.TestCase;


public class TestThatWeGetHelloWorldPrompt extends TestCase {
	private HelloWorld hi;
	public TestThatWeGetHelloWorldPrompt(
	        String name) {
	        super(name);
	}
	
	@Test
	 public void testSay() {
	        hi = new HelloWorld();
	        fail("Fehler");
	        assertEquals("Hello World!", hi.say());	       
	}
	
	 public static void main(String[] args) {
		  junit.textui.TestRunner.run(TestThatWeGetHelloWorldPrompt.class);
	 }
}
```

als JUnit 4-Test laufen lasse, sollte mein Test ja funktionieren. Leider erscheint nur die Fehlermeldung
"java.lang.Assertion.error: Not yet implemented". Daraus werde ich nicht ganz schlau..
Kann mir vielleicht jemand helfen?

Danke schon mal, Andi


----------



## maki (1. Mai 2012)

Hi,

[c]-ea[/c] brauchst du nciht für JUnit.

JUnit 4 verwendet Annotationen, JUnit 3 arbeitet mittels [c]extends TestCase[/c], du versuchst beides gleichzeitig, das funzt natürlich nicht 

Welche Doku liest du eigentlich in der [c]-ea[/c] empfohlen wird und nicht auf JUnit 3 vs JUnit 4 eingegangen wird?


----------



## Atze (1. Mai 2012)

das sieht eigentlich so erstmal ok aus. bis auf die fail() methode, was macht die da? der test schlägt ja ohnehin schon fehl da die stings sich nicht gleichen.

ansonsten sollte das so laufen. bist du sicher dass deine junitxxx.jar ok ist?


----------



## Atze (1. Mai 2012)

maki hat gesagt.:


> JUnit 4 verwendet Annotationen, JUnit 3 arbeitet mittels [c]extends TestCase[/c], du versuchst beides gleichzeitig, das funzt natürlich nicht



also bei mir stören die beiden sich nicht  aber mit dem nicht benötigten -ea stimme ich zu


----------



## maki (1. Mai 2012)

> also bei mir stören die beiden sich nicht


Super, deswegen ist es nicht richtig, und je nachdem welcher Testrunner zum Einsatz kommt, gibt es eiben ein Problem, oder "nur" überflüssigen und irreführenden Code.


----------



## andi_help (1. Mai 2012)

HI,
ich habe mir noch mal die JUnit 4.10 runtergeladen (von junit.org).

In dem Verzeichnis gibt es ja dann die jar-Dateien junit-4.10, junit-4.10-src und junit-dep-4.10. Von den dreien habe ich dann die junit-4.10 in das Projekt eingebunden und gelauncht.

Die Fehlermeldung bleibt dieselbe..

Gruss,
Andi


----------



## Atze (1. Mai 2012)

andi_help hat gesagt.:


> [...] junit-4.10.jar ist als externene JAR eingebunden [...]


damit wir uns richtig verstehen, also zum build-path des projekts hinzugefügt?
du bekommst beim kompilieren keine fehlermeldung?



maki hat gesagt.:


> Super, deswegen ist es nicht richtig, und je nachdem welcher Testrunner zum Einsatz kommt, gibt es eiben ein Problem, oder "nur" überflüssigen und irreführenden Code.



ich hab nicht gesagt dass es richtig im sinne von sinnvoll ist!  aber das daher der fehler kommt wollte ich ausschließen

@TO:
also ich habe dein beispiel hier bei mir auch ausprobiert, es läuft hier sauber durch, ohne diese meldung.


----------



## andi_help (1. Mai 2012)

Ich bekomme die Fehlermeldung, wenn ich das Projekt kompiliere.

Jedoch funktioniert das assertEqual bei mir ebenso nicht, wenn ich nämlich aus dem "Hello World!" etwas lösche, dann läuft der Test immer noch fehlerfrei durch.


----------



## maki (1. Mai 2012)

Atze hat gesagt.:


> ich hab nicht gesagt dass es richtig im sinne von sinnvoll ist!  aber das daher der fehler kommt wollte ich ausschließen


Hast du es denn ausprobiert? 
Am besten so wie beim TS, nämlich mit [c]extends TestCase[/c] und dann noch die Asserts aus org.junit.TestCase  anstatt org.junit.Assert


----------



## Atze (3. Mai 2012)

maki hat gesagt.:


> Hast du es denn ausprobiert?



ja, hab ich 

wie gesagt, bei mir läuft das hier durch, und bei änderung eines strings (in einer der beiden dateien) schlägt der test auch fehl. bei gleichen strings ist alles grün


```
import junit.framework.TestCase;

import org.junit.Test;

public class TestThatWeGetHelloWorldPrompt extends TestCase {
    private HelloWorld hi;
    public TestThatWeGetHelloWorldPrompt(
            String name) {
            super(name);
    }
    
    @Test
     public void testSay() {
            hi = new HelloWorld();
            assertEquals("Hello World", hi.say());        
    }
    
     public static void main(String[] args) {
          junit.textui.TestRunner.run(TestThatWeGetHelloWorldPrompt.class);
     }
}
```


----------

