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();
}
}
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)
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