PowerMock, se moquer d'une méthode statique, PUIS appelez le réel, les méthodes de toutes les autres variables statiques

Je suis la mise en place se moquant de la classe des méthodes statiques. J'ai pour ce faire, dans un @Beforeannotée, JUnit méthode de configuration.

Mon objectif est l'installation de la classe pour appeler des méthodes réelles, sauf pour ces méthodes j'ai choisi de se moquer.

En gros:

@Before
public void setupStaticUtil() {
  PowerMockito.mockStatic(StaticUtilClass.class);

  when(StaticUtilClass.someStaticMethod(anyS

tring())).thenReturn(5); //se moquer de certaines méthodes...

  //Now have all OTHER methods call the real implmentation???  How do I do this?
}

Le problème, je suis en cours d'exécution en est que, dans StaticUtilClass la méthode public static int someStaticMethod(String s) malheureusement jette un RuntimeException s'il est fourni avec un null valeur.

Donc je ne peux pas simplement aller la voie la plus évidente de l'appel de méthodes réelles que les, la réponse par défaut comme ci-dessous:

@Before
public void setupStaticUtil() {
  PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); //Default to calling real static methods

  //The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
  //Even though I don't actually want to call the method, I just want to setup a mock result
  when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5); 
}

J'ai besoin de définir la valeur par défaut de Répondre à l'appel de méthodes réelles sur toutes les autres méthodes statiques après j'ai simulé les résultats de la méthode, je suis intéressé par les moqueries.

Est-ce possible?

  • Le matcher devrait probablement être anyString() plutôt que antString()
  • Adams - yep. Mis à jour.