Wie Junit mit Netbeans 8.1 verwenden ?

Hallo allerseits
ich will etwas mit Tests in Java (Junit) experimentieren bzw. ausprobieren.
Habe deshalb das folgende syntaktische korrekte Java-Programm (in Netbeans 8.1) geschrieben, (ein Demoprogramm) das Junit verwendet (Compiler meldet keine Fehler).
Vorher habe ich junit-4.10.jar runtergeladen und in mein Projekt eingebunden:
Rechte Maustaste auf das aktuelle Projekt -->
Properties -->
Libraries -->
Add Jar/Folder -->
Die folgende Datei junit-4.10.jar anklicken.

Frage:
wie kann man den Test starten bzw. wie nutzt man Junit am Besten ?
Habe schon gelesen, daß man ein Junit-Plugin einbinden kann.
Das geht bei mir nicht.

mfg
ernie




============================
Java:
package demo1junit;
import static org.junit.Assert.*;
import org.junit.Test;

public class Startklasse {

    public static void main(String[] args) {

    }
  
}

class StringUtilsTest
{
@Test
public void testReverse()
{
 assertEquals( "", StringUtils.reverse( "" ) );
 assertEquals( "cba", StringUtils.reverse( "abc" ) );
}
}

class StringUtils
{
 public static String reverse( String string )
 {
  return null;
 }
}
 
Zuletzt bearbeitet von einem Moderator:
Danke für diese Infos.
Habe wie empfohlen mit Alt + F6 den Test gestartet (bzw. mit RM + Test)
Dann erschien die Ausgabe unten.
Müsste es bei
assertEquals( "cba", StringUtils.reverse( "abc" ) );
nicht eine Fehlermeldung bringen, da
StringUtils.reverse( "abc" )
null zurückgibt, aber im Test:
assertEquals( "cba", StringUtils.reverse( "abc" ) );
"abc"
erwartet wird ?

Code:
====================================
ant -f D:\\Daten_Austausch_1_7_18\\MEINE_SKRIPTE\\ProgJava\\28_Junit\\demo1Junit -Dnb.internal.action.name=test -Dignore.failing.tests=true -Dnb.wait.for.caches=true test
init:
deps-jar:
Updating property file: D:\Daten_Austausch_1_7_18\MEINE_SKRIPTE\ProgJava\28_Junit\demo1Junit\build\built-jar.properties
compile:
compile-test:
test-report:
test:
BUILD SUCCESSFUL (total time: 0 seconds)
====================================
mfg
ernie
 
Zuletzt bearbeitet von einem Moderator:
Müsste es bei assertEquals( "cba", StringUtils.reverse( "abc" ) ); nicht eine Fehlermeldung bringen, da StringUtils.reverse( "abc" ) null zurückgibt
Wieso sollte StringUtils.reverse() null zurückliefern und nicht eher tatsächlich den umgekehrten String??
Ob der Test richtig ausgeführt wird, kannst du ganz ganz einfach mit assertTrue(false); ausprobieren.
 
Bist du sicher, dass er tatsächlich in dem Test dieses StringUtils verwendet, und nicht ein anderes? Schau mal in die Imports des Tests, ob da ein anderes StringUtils importiert wird.
 
Und generell ist es keine gute Idee, einen Unit Test zusammen mit anderen Klassen in derselben Compilation Unit (Quelldatei) zu haben, insbesondere da ja die Quelldatei so heißen muss, wie die einzige public class in der Datei, also bei dir Startklasse.java.
Ich denke mal, dass Netbeans den Test gar nicht identifiziert bekommt. In Eclipse funktioniert solch eine Konstellation (Test als package-protected Klasse zusammen mit der public Hauptklasse in einer Compilation Unit) übrigens auch nicht.
Separiere deine Testklasse als eigenständige Datei.
 
Ob und warum StringUtils nicht null zurückliefert, weiß ich nicht. Vielleicht nimmt er ein anderes her, vielleicht wird sein Test nicht ausgeführt. Klar ist nur die Erwartung, dass es null zurückliefern sollte, weil er es eben so programmiert hat :)
 
Deinem Einwand folgend habe ich einige Namen des Quellcode abgändert:

Java:
package demo1junit;
import static org.junit.Assert.*;
import org.junit.Test;

public class Startklasse {
    public static void main(String[] args) {
    }
}

class MeinTest{
  @Test
  public void testReverse(){
    assertEquals( "", MeineStrings.reverse( "" ) );
    assertEquals( "cba", MeineStrings.reverse( "abc" ) );
  }
}

class MeineStrings{
  public static String reverse( String string ){
    return null;
  }
}
bekomme aber immer noch keinen Fehlermeldung:
Code:
ant -f D:\\Daten_Austausch_1_7_18\\MEINE_SKRIPTE\\ProgJava\\28_Junit\\demo1Junit -Dnb.internal.action.name=test -Dignore.failing.tests=true -Dnb.wait.for.caches=true test
init:
Deleting: D:\Daten_Austausch_1_7_18\MEINE_SKRIPTE\ProgJava\28_Junit\demo1Junit\build\built-jar.properties
deps-jar:
Updating property file: D:\Daten_Austausch_1_7_18\MEINE_SKRIPTE\ProgJava\28_Junit\demo1Junit\build\built-jar.properties
compile:
compile-test:
test-report:
test:
BUILD SUCCESSFUL (total time: 0 seconds)
mfg
ernie
 
Zuletzt bearbeitet von einem Moderator:
Der Code dürfte doch nicht einmal kompilieren: die Annotation heißt
Java:
@Test
, nicht
Java:
@test
(außer, ich habe was verpasst :))

EDIT: ah, liegt am Foreneditor -> User wird zugeordnet.

EDIT2: Gibt es hier irgendeinen Trick?
 
...
Separiere deine Testklasse als eigenständige Datei.
Habe den folgenden Text:
Java:
class MeinTest {
    @Test
    public void testReverse() {
        assertEquals("", MeineStrings.reverse(""));
        assertEquals("cba", MeineStrings.reverse("abc"));
    }
}
in eine eigene Datei separiert, so dass das package
demojunit
aus den 2 Dateien:
Startklasse.java
MeinTest.java
besteht.
Es gibt aber immer noch keine Fehlermeldung!

mfg
ernie
 
Zuletzt bearbeitet von einem Moderator:
Du musst die Test-Klasse eventuell als public markieren.
Habe ich gemacht.
Es ändert sich aber nichts:
Code:
ant -f D:\\Daten_Austausch_1_7_18\\MEINE_SKRIPTE\\ProgJava\\28_Junit\\demo1Junit -Dnb.internal.action.name=test -Dignore.failing.tests=true -Dnb.wait.for.caches=true test
init:
deps-jar:
Updating property file: D:\Daten_Austausch_1_7_18\MEINE_SKRIPTE\ProgJava\28_Junit\demo1Junit\build\built-jar.properties
compile:
compile-test:
test-report:
test:
BUILD SUCCESSFUL (total time: 0 seconds)
 
Zuletzt bearbeitet von einem Moderator:
In NetBeans JUnit zu verwenden, ist ja nun wirklich nicht das Problem. Du schreibst eine Klasse, die Du testen möchtest. Dann machst einen Rechtsklick auf der dazugehörigen Datei, im Kontextmenü wählst Du Tools -> Create Tests, wählst ggf. noch die JUnit-Version und das wars.

Wenn das Zeug einmal eingerichtet ist, kannst Du im Projektbaum in den Test-Quellen einfach weitere Testklassen hinzufügen (oder Du wendest obiges Verfahren an).

S. dazu auch https://netbeans.org/kb/docs/java/junit-intro.html
 
Und generell ist es keine gute Idee, einen Unit Test zusammen mit anderen Klassen in derselben Compilation Unit (Quelldatei) zu haben, insbesondere da ja die Quelldatei so heißen muss, wie die einzige public class in der Datei, also bei dir Startklasse.java.
Zumindest bei TDD ist es durchaus normal, erstmal nur die Testklasse und in der sowohl Test als auch den zu testenden Code zu haben ;)
 
@mrBrown ja. Dazwischen hatte ich es mit icode-Tags probiert, ging leider auch nicht. Und dann kam natürlich die Frage auf, ob man hier nichts Escapen kann :)
 
In NetBeans JUnit zu verwenden, ist ja nun wirklich nicht das Problem.
Du schreibst eine Klasse, die Du testen möchtest. Dann machst einen Rechtsklick auf der dazugehörigen Datei, im Kontextmenü wählst Du Tools -> Create Tests, wählst ggf. noch die JUnit-Version und das wars.
Wenn das Zeug einmal eingerichtet ist, kannst Du im Projektbaum in den Test-Quellen einfach weitere Testklassen hinzufügen (oder Du wendest obiges Verfahren an).
S. dazu auch https://netbeans.org/kb/docs/java/junit-intro.html
Es ist für mich ein Problem!
1)
Mit
Tools -> Create Tests,
wird mir Software erstellt. Das will ich nicht.
Ich will meine eigenen Tests schreiben, wie in meinem kleinen Beispiel in meinem Posting.
Aber das funktioniert nicht.

2)
Ich will, dass die folgende Anweisung:
assertEquals("cba", MeineStrings.reverse("abc"));
einen Fehler produziert.
Das funktioniert aber nicht

3)
Was mache ich falsch ?

mfg
ernie


2)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben