Comment faire pour supprimer et de vérifier private static appels de méthode?

Je suis actuellement en train de trébucher dans JUnit tests et ont besoin d'un peu d'aide. Je me suis donc cette classe avec des méthodes statiques qui permettra de revoir certaines des objets. Pour la simplification de souci, j'ai fait un petit exemple. C'est ma classe Factory:

class Factory {

    public static String factorObject() throws Exception {
        String s = "Hello Mary Lou";
        checkString(s);
        return s;
    }

    private static void checkString(String s) throws Exception {
        throw new Exception();
    }
}

Et c'est ma classe de Test:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ Factory.class })        
public class Tests extends TestCase {

    public void testFactory() throws Exception {

        mockStatic(Factory.class);
        suppress(method(Factory.class, "checkString"));
        String s = Factory.factorObject();
        assertEquals("Hello Mary Lou", s);
    }
}

Fondamentalement, ce que j'ai essayé de l'atteindre, c'est que la méthode privée checkString() doit être supprimée (si l'Exception n'est pas levée), et doivent également vérifier que la méthode checkString() a été fait appel à la méthode factorObject().

Mis à JOUR:
La répression fonctionne correctement avec le code suivant:

suppress(method(Factory.class, "checkString", String.class));
String s = Factory.factorObject();

... cependant, il me renvoie NULL pour la Chaîne "s". Pourquoi est-ce?

À mon humble avis, vous avez pris l'outil de trop loin. L'idée de se moquer de la classe sous test est quelque chose qui est découragé. Au lieu de cela, vous devriez passer des valeurs à votre méthode de test qui va de succès et d'échec de la validation par vérification de la chaîne. Cela vous permet de tester l'intégralité de la méthode à tester sans compter sur sa mise en œuvre. Ce que vous créez sont fragiles tests.
Je suis d'accord avec vous, mais actuellement, il n'existe aucun moyen de modifier le code existant, par conséquent, la vérification doit se produire un peu plus compliqué.

OriginalL'auteur Malvin | 2013-05-09