Comment se moquer de membre statique des variables

J'ai une classe ClassToTest qui a une dépendance sur ClassToMock.

public class ClassToMock {

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

  protected void someMethod() {
    ...
  }
}

L'unité de test pour ClassToTest.

public class ClassToTestTest {
  private ClassToMock _mock;

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

}

Lorsque la maquette est appelée dans la méthode setUp (), FileReader.readMemeber1(); est exécuté. Est-il un moyen pour éviter cela? Je pense que d'une façon consiste à initialiser la MEMBER_1 à l'intérieur d'une méthode. D'autres alternatives?

Merci!

Je pense qu'il y a des outils qui vous permettent de maquette statique des variables, mais elles impliquent beaucoup de hacks. Parce que cette classe est difficile à tester, écouter ce que les tests sont à même de vous dire, et faire de votre classe plus faiblement couplés à FileReader.
Question: Est votre préoccupation juste que FileReader.readMember est exécuté (c'est à dire que les tests unitaires ne devrait pas frapper le système de fichiers), ou êtes-vous vouloir aussi les différents tests pour avoir des valeurs différentes pour MEMBER_1?
Oui. Je ne veux pas FileReader.readMember à être exécuté. C'est une autre dépendance.
- Je ajouter une autre étape dans ma réponse, ce qui devrait résoudre votre problème.

OriginalL'auteur pkrish | 2012-12-05