Ich habe eine Klasse, die statische Variablen während der Initialisierung zugewiesen hat. Ich möchte Komponententests für diese Klasse schreiben, indem ich Werte für diese statische Variable ändere. Unten ist ein einfacher Code mein SzenarioUnit Testing mit dem Ändern von statischen Variablen während der Initialisierung
Klasse Test zu erklären:
public class Hello {
private final static String HELLO_FINAL = "Hello " + HelloTo.getInstance().getHelloTo(); // I would like to modify this value between tests
public String sayHello() {
return HELLO_FINAL;
}
}
Stützklasse:
public class HelloTo {
private String helloTo = "World";
private static HelloTo singleton = new HelloTo();
private HelloTo() {}
public static HelloTo getInstance() {
return singleton;
}
public void setHelloTo(String helloTo) {
this.helloTo = helloTo;
}
public String getHelloTo() {
return helloTo;
}
}
Prüfklasse:
import org.junit.Assert;
import org.junit.Test;
public class HelloTest {
@Test
public void testDefault() {
Assert.assertEquals("Hello World", new Hello().sayHello());
}
@Test
public void testDynamic() {
HelloTo.getInstance().setHelloTo("My name");
Assert.assertEquals("Hello My name", new Hello().sayHello());
}
}
Gibt es eine Möglichkeit zu machen Beide Tests sind erfolgreich. Derzeit erhalte ich einen Fehler für testDymanic() sagte:
org.junit.ComparisonFailure: expected:<Hello [World]> but was:<Hello [My name]>
Vielen Dank im Voraus!