Wie mock-statische member-Variablen

Habe ich eine Klasse ClassToTest, die eine Abhängigkeit von ClassToMock.

public class ClassToMock {

  private static final String MEMBER_1 = FileReader.readMemeber1();

  protected void someMethod() {
    ...
  }
}

Den unit-test-Fall für ClassToTest.

public class ClassToTestTest {
  private ClassToMock _mock;

  @Before
  public void setUp() throws Exception {
     _mock = mock(ClassToMock.class)
  }

}

Beim verspotten heißt in der Methode setUp (), FileReader.readMemeber1(); ausgeführt wird. Gibt es eine Möglichkeit dies zu vermeiden? Ich denke, eine Möglichkeit ist die Initialisierung der MEMBER_1 innerhalb einer Methode. Irgendwelche anderen alternativen?

Dank!

  • Ich denke, dass es tools gibt, die es ermöglichen, Sie zu verspotten, sich statische Variablen, aber Sie beinhalten eine Menge hacks. Da diese Klasse ist schwierig zu testen, zu hören, was die tests werden versuchen, Ihnen zu sagen, und machen Sie Ihre Klasse mehr lose gekoppelt FileReader.
  • Frage: Ist Ihre Sorge nur, dass FileReader.readMember ausgeführt wird (D. H., dass unit-tests sollten nicht auf die Datei system), oder sind Sie auch wollen, verschiedene tests, verschiedene Werte für MEMBER_1?
  • Ja. Ich will nicht mit FileReader.readMember ausgeführt werden. Es ist eine andere Abhängigkeit.
  • Ich füge einen weiteren Schritt in meiner Antwort, dies sollte Ihr problem lösen.
InformationsquelleAutor pkrish | 2012-12-05
Schreibe einen Kommentar