Kann mir jemand bei dem JUnit-Test helfen?


19.04.2023, 10:13

Ich habe diesen Testklasse geschrieben, aber der will unbedingt Junit-Test sehen.

mport com.mycompany.mavenproject1.NumberInputStream;
import java.io.IOException;


public class NumberInputStreamTest {


    public static void main(String[] args) throws IOException {
        NumberInputStream inputStream = new NumberInputStream("zahlen_2.txt");


        try {
            int value;
            while (true) {
                value = inputStream.read();
                if (value == -1) {
                    break;
                }
                System.out.println(value);
            }
        } catch (IOException e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}
Destranix  19.04.2023, 09:01

Und wo ist dein Test? Hier sieht man nur die Klasse selbst.

Mathematik2000 
Fragesteller
 19.04.2023, 10:14

habe meine Testklasse hochgeladen, ich weis nicht, wie ich es zu Junit-Test umwandeln?

1 Antwort

Schau mal hier:

https://www.vogella.com/tutorials/JUnit/article.html

Du kannst Annotations an deine Methoden setzen. Dadurch werden die beim Ausführen des Unit-Tests dann entsprechend ausgeführt.

Du kannst Assertions verwenden, um Ergebnisse zu prüfen.

Du musst gegebenenfalls schauen, dass du den Test auch als test ausführst und nicht als normales Programm.

Was du bei dir machen kannst:

Du rufst read auf und vergleichst dann, ob die gelesene Zahl er Zahl entspricht, die in der Text-Datei steht (die du entweder manuell überträgst oder mit einer Referenz-Implementierung parst).

Mathematik2000 
Fragesteller
 19.04.2023, 10:21

Der Test muss ich ohne Main_Methode schreiben, aber wenn ich die Main_Methode lösche, funktioniert bei mir nicht

0
Destranix  19.04.2023, 10:22
@Mathematik2000

Dann führst du den Test nicht als Test aus.

Wenn du die Annotation passend setzt, dann sollte das als Unit-Test ausführbar sein.

0
Mathematik2000 
Fragesteller
 19.04.2023, 10:22

Ich habe mehrere Junit-Test geschrieben aber das funktioniert nicht

0
Destranix  19.04.2023, 10:23
@Mathematik2000

Wie gesagt, womöglich führst du den Test nicht als Unit-Test aus. Wie startest du den Test denn?

0
Mathematik2000 
Fragesteller
 19.04.2023, 12:21
@Destranix

public class NumberInputStreamTest {

  @Test

  void testReadValidNumbers() throws IOException, NumberToLargeException {

    NumberInputStream inputStream = new NumberInputStream("zahlen_1.txt");

    int value;

    value = inputStream.read();

    assertEquals(12, value);

    value = inputStream.read();

    assertEquals(0, value);

    value = inputStream.read();

    assertEquals(222, value);

    value = inputStream.read();

    assertEquals(89, value);

    value = inputStream.read();

    assertEquals(123, value);

    value = inputStream.read();

    assertEquals(45, value);

    value = inputStream.read();

    assertEquals(78, value);

    value = inputStream.read();

    assertEquals(7, value);

    value = inputStream.read();

    assertEquals(77, value);

    value = inputStream.read();

    assertEquals(1, value);

    value = inputStream.read();

    assertEquals(3, value);

    value = inputStream.read();

    assertEquals(4, value);

    value = inputStream.read();

    assertEquals(45, value);

    value = inputStream.read();

    assertEquals(45, value);

    value = inputStream.read();

    assertEquals(37, value);

    value = inputStream.read();

    assertEquals(73, value);

  }

  @Test

  void testReadNumberToLargeException() throws IOException {

    NumberInputStream inputStream = new NumberInputStream("zahlen_2.txt");

    assertThrows(NumberToLargeException.class, inputStream::read);

  }

}

0