web-dev-qa-db-fra.com

Guava @VisibleForTesting: aidez-moi avec un exemple complet

Mon intention est de faire des tests unitaires de méthodes privées et je comprends comment importer le @VisibleForTesting et l’utiliser pour une méthode privée. J'ai fait pas mal de recherches mais je suis incapable de voir un exemple complet illustrant cette fonctionnalité.

Par exemple:

class MyClass {
    @VisibleForTesting 
    private double[] getWorkArray(double[] values,int length) {
               :
               :
        return <some double array> 
    }
}

Maintenant, dans JUnit, je dois pouvoir faire

@Test
public void testProvateMethod() {
    MyClass object = new MyClass();
    assertNotNull(object.getWorkArray(...);
}

Mais la partie difficile est que je suis incapable de comprendre/faire ce qui suit: __. (puisqu'il génère une erreur liée à la visibilité de la méthode)

Je ne peux pas le faire en action pendant que j'écris un test dans JUnit (en raison d'une erreur d'accès privé). Par exemple: mvn clean test

Veuillez fournir un exemple complet pour toutes les étapes nécessaires à la réalisation du test JUnit de méthodes privées.

17
user3709525

Tester une méthode privée doit être l’un des mauvais schémas. Cependant, vous ressentez parfois le besoin urgent de tester des méthodes privées. Dans ce cas, j’utilise personnellement ReflectionTestUtils pour tester la méthode. En effet, nous voulions conserver l'intention initiale de la méthode privée et ne tester que la méthode. Ci-dessous un exemple de mon échantillon.

MyClass myClass = new MyClass();

ReflectionTestUtils.invokeMethod(myClass, "getWorkArray", values, length);

Un inconvénient est que je reçois le nom de la méthode sous forme de chaîne et que c'est assez triste, à part le fait que le refactoring ne convertit pas correctement dans IDEA.

J'espère que ça aide.

Merci.

2
Dark