JUnit parametrisierter Test

Turing0001

Aktives Mitglied
Hallo Leute,

momentan beschäftige ich mit JUnit in Eclipse. Dazu habe ich zu den parametrisierten Test ein Beispiel gefunden, welches ich aber nicht recht nachvollziehen kann. Mir ist nicht klar, woher/wie denn bitte der Konstruktor seine Argumente nimmt. Die zu testende Funktion soll bei mir nichts anderes tun als eionen übergebenen String zu verdoppeln. Kann nir bezüglich des Mechanismus dahinter jemand auf die Sprünge helfen, die Erklärungen die ich bisher gefunden habe waren nicht wirklich hilfreich.
Hier das Codebeispiel:

Java:
package de.mamasoft;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)

public class TestAppParameterized {
    
    MyApp mapp;
    private String input;
    private String expectedOutput;
    
    
    
    public TestAppParameterized(String input, String expectedOutput) {
        super();
        this.input = input;
        this.expectedOutput = expectedOutput;
    }

    @Parameters
    
    public static Collection <String[]>testData()
    {
        String expectOutput [][] =
        {{"Hallo","HalloHallo"},
        {"",""}};
        return Arrays.asList(expectOutput);
    }

    @Test
    public void myAppTest() {
        //fail("Not yet implemented");
        mapp = new MyApp();
        assertEquals(expectedOutput,mapp.doubleString(input));
    }
    
    @Test
    public void myAppTest2()
    {
        mapp = new MyApp();
        assertEquals(expectedOutput,mapp.doubleString(input));
        
    }

}

Vielen Dank für euer Mühe vorab.
 
K

kneitzel

Gast
Der Block mit dem @Parameters definiert die Aufrufe, die verwendet werden sollen:
Java:
    @Parameters
    public static Collection <String[]>testData()
    {
        String expectOutput [][] =
        {{"Hallo","HalloHallo"},
        {"",""}};
        return Arrays.asList(expectOutput);
    }

Evtl. hilft Dir folgende Seite, die das etwas beschreibt (JUnit 4):

Bei JUnit 5 sieht es etwas anders aus - falls Du da irgendwann ein Wechsel planen solltest:
 

Turing0001

Aktives Mitglied
Der Block mit dem @Parameters definiert die Aufrufe, die verwendet werden sollen:
Java:
    @Parameters
    public static Collection <String[]>testData()
    {
        String expectOutput [][] =
        {{"Hallo","HalloHallo"},
        {"",""}};
        return Arrays.asList(expectOutput);
    }

Evtl. hilft Dir folgende Seite, die das etwas beschreibt (JUnit 4):

Bei JUnit 5 sieht es etwas anders aus - falls Du da irgendwann ein Wechsel planen solltest:
Hallo Kneitzel,

danke für die Info. Ich glaube zwar mittlerweile zu verstehen wie der Mechanismus funktioniert, aber ich schaue mir das mal an.
Die Sache mit den Warnings bei Maven von letzter Woche konnte ich übrigens nicht klären, das scheint aber wirklich ein Eclipse-Problem zu sein.
 

Turing0001

Aktives Mitglied
Der Block mit dem @Parameters definiert die Aufrufe, die verwendet werden sollen:
Java:
    @Parameters
    public static Collection <String[]>testData()
    {
        String expectOutput [][] =
        {{"Hallo","HalloHallo"},
        {"",""}};
        return Arrays.asList(expectOutput);
    }

Evtl. hilft Dir folgende Seite, die das etwas beschreibt (JUnit 4):

Bei JUnit 5 sieht es etwas anders aus - falls Du da irgendwann ein Wechsel planen solltest:
Hallo Kneitzel,

wenn ich das richtig verstehe wird also für jeden Test eine neue Instanz der Klasse erzeugt und dem Konstruktor das nächste Datenpaar aus der erzeugten Liste übergeben. Kann man das so formulieren?
Ich bin übrigens sehr froh, dass Du hier im Forum aktiv bist. Dadurch lerne ich sehr viel in kurzer Zeit. Danke Dir nochmals.
 
K

kneitzel

Gast
wenn ich das richtig verstehe wird also für jeden Test eine neue Instanz der Klasse erzeugt und dem Konstruktor das nächste Datenpaar aus der erzeugten Liste übergeben. Kann man das so formulieren?
Ja, das ist genau richtig und auch korrekt formuliert.

Bezüglich Liste evtl. die Anmerkung: In dem Beispiel wird Collection verwendet, aber es "reicht" ein Interable (Das Interface Collection erbt von Iterable, daher ist das so natürlich auch richtig.)

Und Danke für das positive Feedback, es freut mich, wenn ich Dir weiter helfen konnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O JUnit - Lösche Eintrag in Datenbank und prüfe ob Eintrag gelöscht wurde Frameworks - Spring, Play, Blade, Vaadin & Co 2
8u3631984 Junit : static MockMvc in @BeforeAll Methode führt zu NullPointer Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand JUnit Einstieg - Verständnisfrage Download testen Frameworks - Spring, Play, Blade, Vaadin & Co 20
OnDemand JUnit testen einer private Methode Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
D Spring: Problem beim ausführen eines JUnit Tests. Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
8u3631984 Beim WebMVC Test wird Resource File nicht gefunden. Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Repository wird null im Test Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Wie schreibt man Test für einen Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 5
D SpringBootTest H2 Database für Test Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Validations-Test mit @Size Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Test Properties aus application.yml Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
8u3631984 Bestpractice : Test JPA Repositories Frameworks - Spring, Play, Blade, Vaadin & Co 9
8u3631984 Autowired App im Test später starten Frameworks - Spring, Play, Blade, Vaadin & Co 0
8u3631984 Spring JPA Test in Gradle Sub Module Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Test findet Component nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
F Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 14
S Integrations Test in Java mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
J Test mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Transaktionaler Spring Test ohne von AbstractTransactionalJUnit4SpringContextTests zu erben Frameworks - Spring, Play, Blade, Vaadin & Co 4

Ähnliche Java Themen

Neue Themen


Oben