[JAVA] Comment tester une méthode privée qui prend un tableau ou un argument de longueur variable dans JUnit

J'ai étudié à Comment tester une méthode privée avec JUnit --Qiita, mais ... je ne suis pas assez.

environnement OS : macOS Hight Sierra Eclipse : Neon.3 Release (4.6.3) JUnit : 4 JDK : 1.8.45

La cible de test est une méthode privée qui prend un tableau ou un argument de longueur variable.


package variable.length.argument;

public class WhatVariableLengthArgument {
    /**
     *Afficher les arguments de longueur variable.
     * @description du paramètre Description.
     * @param args arguments de longueur variable.
     */
    private void printLengthArgs(String description, Object... args) {
        System.out.print(description + " : ");
        for (Object object : args) {
            System.out.print(object + ",");
        }
        System.out.println();
    }

    /**
     *Afficher un tableau d'arguments.
     * @description du paramètre Description du tableau.
     * @tableau de paramètres param.
     */
    private void printArrayArgs(String description, String[] array) {
        System.out.print(description + " : ");
        for (String s : array) {
            System.out.print(s + ",");
        }
        System.out.println();
    }
}

Si l'argument est un tableau, spécifiez type name []. Class dans getDeclaredMethod ()

Si l'argument est un tableau


public class WhatVariableLengthArgumentTest {
    /**Instance à tester. */
    WhatVariableLengthArgument testInstance = new WhatVariableLengthArgument();

    @Test
public void Méthodes de test qui prennent un tableau comme argument() throws NoSuchMethodException, SecurityException,
            IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Exécutez une méthode qui prend un tableau comme argument("L'argument est un tableau", new String[] { "1er", "Seconde" });
    }

Exécute une méthode qui prend un tableau vide privé comme argument(String description, String[] array)
            throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        String methodName = "printArrayArgs";
        Method method =Obtenez une méthode qui prend un tableau comme argument(methodName);
        method.invoke(this.testInstance, description, array);
    }

Méthode privée Récupère une méthode qui prend un tableau comme argument(String methodName)
            throws NoSuchMethodException, SecurityException {
        //Le tableau est également une chaîne normale[].peut être écrit en classe.
        Method method = WhatVariableLengthArgument.class.getDeclaredMethod(
                methodName, String.class, String[].class);
        method.setAccessible(true);
        return method;
    }
}

Classe arrClass = String []. Class; // Le tableau est OK Java Reflection Memo (Java Reflection Memo de Hishidama)

Lorsque l'argument est un argument de longueur variable, faites la même chose que pour un tableau

Si l'argument est un argument de longueur variable


    WhatVariableLengthArgument testInstance = new WhatVariableLengthArgument();

    @Test
public void Méthodes de test qui prennent des arguments de longueur variable() throws NoSuchMethodException, SecurityException,
            IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Exécute une méthode qui prend un argument de longueur variable comme argument("Argument de longueur variable:Une chaîne", "1er");
Exécute une méthode qui prend un argument de longueur variable comme argument("Argument de longueur variable:2 cordes", "1er", "Seconde");
    }

private void Exécute une méthode qui prend un argument de longueur variable comme argument(String description, Object... args)
            throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        String methodName = "printLengthArgs";
        Method method =Obtenez une méthode qui prend un argument de longueur variable(methodName);
        method.invoke(this.testInstance, description, args);
    }

Méthode privée Obtenir une méthode qui prend un argument de longueur variable comme argument(String methodName)
            throws NoSuchMethodException, SecurityException {
        //Les arguments de longueur variable peuvent être écrits de la même manière que les tableaux car ils deviennent des tableaux lors de la compilation..
        Method method = WhatVariableLengthArgument.class.getDeclaredMethod(
                methodName, String.class, Object[].class);
        method.setAccessible(true);
        return method;
    }

Méthodes avec des arguments de longueur variable Si vous voulez obtenir une méthode avec des arguments de longueur variable avec getMethod (), spécifiez un tableau comme type d'argument. Java Reflection Memo (Java Reflection Memo de Hishidama)

Recommended Posts

Comment tester une méthode privée qui prend un tableau ou un argument de longueur variable dans JUnit
Comment tester l'étendue privée avec JUnit
Tester les méthodes privées dans JUnit
Tester les méthodes privées dans JUnit
[Java] Tester des méthodes privées avec JUnit
Comment filtrer JUnit Test dans Gradle
[Java] Comment tester s'il est nul dans JUnit
Comment tester les interruptions pendant Thread.sleep avec JUnit
JUnit 5: Comment écrire des cas de test dans enum
Si vous souhaitez satisfaire la couverture de test des méthodes privées dans JUnit
Résumé des classes racine dans différentes langues
Traitement parallèle et parallèle dans divers langages (édition Java)
Diverses pensions au Japon
Divers threads en java
Utiliser le constructeur avec des arguments dans cucumber-picocontainer
Comment fonctionne la mémoire dans les langages orientés objet
Comment tester une méthode privée qui prend un tableau ou un argument de longueur variable dans JUnit
Points à garder à l'esprit lors du test de méthodes privées dans JUnit
Comment exécuter JUnit dans Eclipse
Contrôler l'ordre de test dans Junit4 avec un type d'énumération
Comment fixer la date système dans JUnit
Comment tester une méthode privée et la simuler partiellement en Java
Comment effectuer UT avec Excel en tant que données de test avec Spring Boot + JUnit5 + DBUnit
Comment écrire du code de test avec la certification de base
Visualisez la méthode de test en cours d'exécution dans TestNG dans l'écouteur
Mélanger les cas de test avec JUnit 5 et les méthodes par défaut
Comment accéder aux méthodes et champs Java Private
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
Comment implémenter UICollectionView avec du code uniquement dans Swift
Comment appeler des fonctions en bloc avec la réflexion Java
[Java] Comment omettre le constructeur privé dans Lombok
Comment basculer Tomcat context.xml avec Eclipse WTP
Comment faire un test unitaire avec JVM sur une source à l'aide de RxAndroid
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Organisé comment interagir avec le JDK par étapes
[Comment insérer une vidéo dans un hameau avec Rails]
Comment supprimer des images non balisées en masse avec Docker
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment interroger Array dans jsonb avec Rails + postgres
Résumé de la mise en œuvre des arguments par défaut en Java
Faites un test unitaire avec Junit.
Comment séparer les mots dans les noms dans les classes, les méthodes et les variables
Comment passer un objet à Mapper dans MyBatis sans passer par un argument
Comment gérer les exceptions froidement avec Java 8 Stream ou en option
Comment exécuter uniquement des fichiers spécifiques avec le test de rake de gem
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Comment se moquer de certaines méthodes de la classe testée
Mappage à une classe avec un objet de valeur dans How to My Batis
Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
Comment configurer un proxy avec authentification dans Feign
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
Comment gérer l'événement où Committee :: InvalidRequest se produit en comité pendant le test de téléchargement de fichier Rspec
Tester l'API Web avec junit
À propos des méthodes de validation dans JUnit
Comment utiliser JUnit (débutant)
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment écrire Junit 5 organisé
[Création] Comment utiliser JUnit