Palindrom Test mit Junit

Bobi

Bekanntes Mitglied
Hallo!
Ich habe ein Programm geschrieben, welches Palindrom Wörter erkennt und true oder false zurück gibt. wenn ich mit Junit testen will, es funktionieren alle Test außer Test wo die Exception ausgeworfen wird. Aber hier kommt große ABER ich muss Test auskommentieren um bzw. er Junit teste nur erster Fall. Links oben steht dann in Eclipse Runs: 1/1 ob wohl ich viele Tests geschrieben habe. Könnt euch mir helfen bitte.
Danke im Voraus.

Java:
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.junit.jupiter.api.Test;


class PalindromPrueferTest {

    @Test
    public void testIstPalindrom() {
        // Erzeuge ein Objekt zum Testen.
        PalindromPruefer einPalindromPruefer = new PalindromPruefer();

      
        /**
        // Teste die null-Referenz.
        Throwable ex = assertThrows(IllegalArgumentException.class, () -> {einPalindromPruefer.istPalindrom(null);});
        assertThat("Null-Referenz wurde nicht korrekt verarbeitet.",
                ex.getMessage(),
                is(equalTo("Argument darf nicht null sein.")));
    **/
      
        // nur die erste Fall wird getestet
        assertThat("String der Laenge 5 wurde nicht korrekt verarbeitet.",
                einPalindromPruefer.istPalindrom("radara"),
                is(equalTo(false)));
      
        // Teste Zeichenkette der Laenge 0.
        assertThat("String der Laenge 0 wurde nicht korrekt verarbeitet.",
                einPalindromPruefer.istPalindrom(""),
                is(equalTo(true)));

      
        assertThat("String der Laenge 5 wurde nicht korrekt verarbeitet.",
                einPalindromPruefer.istPalindrom("Reittier"),
                is(equalTo(true)));
   }
}
 

mrBrown

Super-Moderator
Mitarbeiter
Die Ausnahme Behandlung schmeißt Fehler.
Welcher Fehler an welcher Stelle? :rolleyes:

Es wird nicht angezeigt, ob den Rest den Test bestanden hat.
Es gibt dann keinen Rest. Wenn eine Assertion fehl schlägt, wird alles danach nicht ausgeführt.
Deshalb auch: Ein Testfall -> eine eigene Methode.

(Und das ist natürlich ein super Beispiel, warum „Kommentare“ im Code oft unnütz sind :p)
 
Zuletzt bearbeitet:

Bobi

Bekanntes Mitglied
Also ich glaube ich habe Fehler bei der Hauptklasse, wo die Fehler Meldung ausgegeben wird.
Ich verstehe nicht viel von Java, aber ich dachte,

Das ist Haupt klasse, die Lösung ist sehr schmutzig vielleicht macht man nicht so, aber es funktioniert.
kannst du mir bitte sagen wie ich jetzt Ausnahme Behandlung einbauen kann. und dann wie kann ich mit verschiedene Wörter Testen.
Java:
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;

import java.util.Scanner;

public class PalindromPruefer {
    String nachricht;
    boolean message = false;
    
    public boolean istPalindrom(String eingabe) {
       
        String strR = "";     
        int lenge = eingabe.length()-1;
         
       if(eingabe==""){
            message = true;
        }
        else {
        for(int i = lenge; i >= 0; i--) {
        strR = strR + eingabe.toLowerCase().charAt(i);
        }
        if(eingabe.toLowerCase().equals(strR)) {
            message = true;
        }
       }
        return message;
    }
} 
[/java]
 

Javinner

Top Contributor
a) Boolean message gehört in die Methode istPalindrom rein.
b) Eigentlich brauchst du die Variable message garnicht
c) Palindrom = ein Wort gespiegelt, also sollte man es in der for-Schleife berücksichtigen und
den Anfang von String stets mit dem Ende des Strings Buchstabe für Buchstabe vergleichen, bis man in der Mitte angekommen ist. Ich hoffe, ich drücke mich verständlich aus.
Als Rückgabetyp kannst du auf die Klasseninstanzen der Klasse Boolean zurückgreifen, den diese die Werte Boolean.TRUE und Boolean.FALSE anbietet, wie ich finde, hier kommt es sehr gelegen.

Java:
public class Test
{

    public static void main(String[] args)
    {
        String reittier = "reittier";
        System.out.println(isPalindrome(reittier));
        String anna = "Anna";
        System.out.println(isPalindrome(anna));
        String peter = "Peter";
        System.out.println(isPalindrome(peter));
        String leer = "";
        System.out.println(isPalindrome(leer));
     

    }
/** Konsolenausgabe */
true
true
false
Exception in thread "main" java.lang.IllegalArgumentException: isPalindrom: string is empty
    at test.test.isPalindrome(test.java:23)
    at test.Test.main(test.java:15)
C:\Users\...\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
}
 
Zuletzt bearbeitet:

Bobi

Bekanntes Mitglied
Javinner
teilweise habe ich verstanden was du geschrieben hast.
aber meine Frage wie und wo kann ich Ausnahme Behandlung einbauen, das mein Test nicht mehr Fehler spuckt?
 

Javinner

Top Contributor
Ich hätte es in die Methode implementiert. Wenn du den String bei der Initialisierung an die Klasse übergibst, dann im Konstruktor. Das Zweite hätte ich jedenfalls vermieden.
 

Javinner

Top Contributor
Wie du bereits schriebst:
Java:
if(Wert gleich null)
{
    throw new FehlerExceptionDeinerWahl(Nachricht);
} else
{
    //Dein Code
}
 

Bobi

Bekanntes Mitglied
Hier ist ganze code, aber funktioniert es trotzdem nicht.
Code:
public class PalindromPruefer {
  
    String eingabe;
  
    public boolean istPalindrom(String eingabe) {
      
        boolean message = false;
        String strR = "";    
        int lenge = eingabe.length()-1;
      
        if (eingabe == null)
        {   // bei throw zeigt eclipse gelbe linie, (dead code)
            throw new IllegalArgumentException("Argument darf nicht null sein.");
        }
        else if(eingabe=="")
                {
                message = true;
                }
        else {
      
        for(int i = lenge; i >= 0; i--) {
        strR = strR + eingabe.toLowerCase().charAt(i);
        }
        if(eingabe.toLowerCase().equals(strR)) {
            message = true;
        }
       }
        return message;
    }
}
 

Javinner

Top Contributor

Bobi

Bekanntes Mitglied
Javinner.
ich habe zwei test Felle gegeben die unbedingt berücksichtigen soll
Java:
// Teste die null-Referenz.
        Throwable ex = assertThrows(IllegalArgumentException.class, () -> {einPalindromPruefer.istPalindrom(null);});
        assertThat("Null-Referenz wurde nicht korrekt verarbeitet.",
                ex.getMessage(),
                is(equalTo("Argument darf nicht null sein.")));

        // Teste Zeichenkette der Laenge 0.
        assertThat("String der Laenge 0 wurde nicht korrekt verarbeitet.",
                einPalindromPruefer.istPalindrom(""),
                is(equalTo(true)));

[/java]
Ich glaube mit der Methode isEmpty() exception zu Ausgeben ist nicht korrekt.
 

Bobi

Bekanntes Mitglied
mrBrown.
Ich verstehe nicht meine Code.
Hier in diesem Code wie ich versuche Ausnahme zu behandeln aber es funktioniert nicht
Java:
public class PalindromPruefer {
  
    String eingabe;
  
    public boolean istPalindrom(String eingabe) {
      
        boolean message = false;
        String strR = "";    
        int lenge = eingabe.length()-1;
      
        if (eingabe == null)
        {   // bei throw zeigt eclipse gelbe linie, (dead code)
            throw new IllegalArgumentException("Argument darf nicht null sein.");
        }
        else if(eingabe=="")
                {
                message = true;
                }
        else {
      
        for(int i = lenge; i >= 0; i--) {
        strR = strR + eingabe.toLowerCase().charAt(i);
        }
        if(eingabe.toLowerCase().equals(strR)) {
            message = true;
        }
       }
        return message;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Palindrom Test Java Basics - Anfänger-Themen 9
M Palindrom Test mit Char-arrays! Java Basics - Anfänger-Themen 3
D Größtes Palindrom Produkt aus zwei dreistelligen Zahlen Java Basics - Anfänger-Themen 60
A Palindrom Java Basics - Anfänger-Themen 3
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
N palindrom erkennen Java Basics - Anfänger-Themen 3
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
L Palindrom in zweidimensionalem Array Java Basics - Anfänger-Themen 16
T Auf Palindrom überprüfen Java Basics - Anfänger-Themen 10
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
P Programm Hilfe Palindrom Java Basics - Anfänger-Themen 6
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
C Palindrom im array Java Basics - Anfänger-Themen 5
R Palindrom eines int-Arrays berechnen Java Basics - Anfänger-Themen 14
D Palindrom Java Basics - Anfänger-Themen 15
H Palindrom Programm Java Basics - Anfänger-Themen 8
C Überprüfen auf Palindrom Java Basics - Anfänger-Themen 12
P Palindrom Java Basics - Anfänger-Themen 10
R In einem Palindrom 2 Buchstaben vergleichen Java Basics - Anfänger-Themen 16
H Palindrom Java Basics - Anfänger-Themen 7
NoXiD Auf Palindrom Prüfen Java Basics - Anfänger-Themen 9
M Palindrom mit Groß & kleinbuchstaben Java Basics - Anfänger-Themen 19
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P JUnitTest Best Practise (Ein Assert pro Test?) Java Basics - Anfänger-Themen 10
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
D Test auf Dopplungen Java Basics - Anfänger-Themen 32
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
B zzz.test Java Basics - Anfänger-Themen 13
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
C Erste Schritte Hexidezimal-Test Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
T Minesweeper Test Java Basics - Anfänger-Themen 2
S Junit Test Java Basics - Anfänger-Themen 2
F Test Java Basics - Anfänger-Themen 12
W Ist das ein legitimer Test? Java Basics - Anfänger-Themen 5
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
U Best Practice Datenbereitstellung Unit Test Java Basics - Anfänger-Themen 6
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
Z Vererbung Test auf Normalverteilung, Wilcoxon Java Basics - Anfänger-Themen 3
M Assertion NotNull Test Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
W Test, ob Datei existiert, schlägt fehl Java Basics - Anfänger-Themen 4
T JUnit test failed Java Basics - Anfänger-Themen 3
H Array Test Methode schreiben Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
V Bruchrechner Test Java Basics - Anfänger-Themen 7
T Test läuft schief Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
N Test mit assert Java Basics - Anfänger-Themen 9
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
S Performance-/Stress Test für Webanwendung Java Basics - Anfänger-Themen 2
V Mediaplayer - NullPointerException bei Unit-Test Java Basics - Anfänger-Themen 4
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Javabefehl Test Java Basics - Anfänger-Themen 3
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
H lucas-test Java Basics - Anfänger-Themen 14
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
N Test Datei = Bild Java Basics - Anfänger-Themen 5
S Erste Schritte 1. Test Programm Java Basics - Anfänger-Themen 21
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
E Am Mittwoch Test und ich checks überhaupt nich Java Basics - Anfänger-Themen 27
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
D Test einer Chipkarte Java Basics - Anfänger-Themen 2
J Problem mit Test-Klasse Java Basics - Anfänger-Themen 4
E Test, ob String in Double umwandelbar ist Java Basics - Anfänger-Themen 3
J Test steht vor der Tür !! Java Basics - Anfänger-Themen 2
X Array nur mit Zahlen (test) Java Basics - Anfänger-Themen 11
Houly JUnit Test Suite anlegen Java Basics - Anfänger-Themen 6
F Primitiver Lucas-Lehmer-Test hängt sich auf Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben