Ich habe bei So testen Sie eine private Methode mit JUnit - Qiita studiert, aber ... ich bin nicht genug.
Umgebung OS : macOS Hight Sierra Eclipse : Neon.3 Release (4.6.3) JUnit : 4 JDK : 1.8.45
Das Testziel ist eine private Methode, die ein Array oder ein Argument variabler Länge verwendet.
package variable.length.argument;
public class WhatVariableLengthArgument {
/**
*Argumente mit variabler Länge anzeigen.
* @Parameterbeschreibung Beschreibung.
* @param args Argumente mit variabler Länge.
*/
private void printLengthArgs(String description, Object... args) {
System.out.print(description + " : ");
for (Object object : args) {
System.out.print(object + ",");
}
System.out.println();
}
/**
*Zeigen Sie ein Array von Argumenten an.
* @Parameterbeschreibung Arraybeschreibung.
* @param array array.
*/
private void printArrayArgs(String description, String[] array) {
System.out.print(description + " : ");
for (String s : array) {
System.out.print(s + ",");
}
System.out.println();
}
}
Wenn das Argument ein Array ist
public class WhatVariableLengthArgumentTest {
/**Zu testende Instanz. */
WhatVariableLengthArgument testInstance = new WhatVariableLengthArgument();
@Test
public void Testmethoden, die ein Array als Argument verwenden() throws NoSuchMethodException, SecurityException,
IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Führen Sie eine Methode aus, die ein Array als Argument verwendet("Argument ist ein Array", new String[] { "1", "Zweite" });
}
Führen Sie eine Methode aus, die ein privates void-Array als Argument verwendet(String description, String[] array)
throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
String methodName = "printArrayArgs";
Method method =Rufen Sie eine Methode ab, die ein Array als Argument verwendet(methodName);
method.invoke(this.testInstance, description, array);
}
private Methode Ruft eine Methode ab, die ein Array als Argument verwendet(String methodName)
throws NoSuchMethodException, SecurityException {
//Das Array ist auch ein normaler String[].kann als Klasse geschrieben werden.
Method method = WhatVariableLengthArgument.class.getDeclaredMethod(
methodName, String.class, String[].class);
method.setAccessible(true);
return method;
}
}
Klasse arrClass = String []. Class; // Array ist OK
Java Reflection Memo (Hishidamas Java Reflection Memo)
Wenn das Argument ein Argument variabler Länge ist
WhatVariableLengthArgument testInstance = new WhatVariableLengthArgument();
@Test
public void Testmethoden, die Argumente variabler Länge verwenden() throws NoSuchMethodException, SecurityException,
IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Führen Sie eine Methode aus, die ein Argument variabler Länge als Argument verwendet("Argument variabler Länge:Eine Zeichenfolge", "1");
Führen Sie eine Methode aus, die ein Argument variabler Länge als Argument verwendet("Argument variabler Länge:2 Saiten", "1", "Zweite");
}
private void Führt eine Methode aus, die ein Argument variabler Länge als Argument verwendet(String description, Object... args)
throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
String methodName = "printLengthArgs";
Method method =Holen Sie sich eine Methode, die ein Argument variabler Länge akzeptiert(methodName);
method.invoke(this.testInstance, description, args);
}
private Methode Ruft eine Methode ab, die ein Argument variabler Länge als Argument verwendet(String methodName)
throws NoSuchMethodException, SecurityException {
//Argumente mit variabler Länge können auf die gleiche Weise wie Arrays geschrieben werden, da sie beim Kompilieren zu Arrays werden..
Method method = WhatVariableLengthArgument.class.getDeclaredMethod(
methodName, String.class, Object[].class);
method.setAccessible(true);
return method;
}
Methoden mit Argumenten variabler Länge Wenn Sie mit getMethod () eine Methode mit Argumenten variabler Länge erhalten möchten, geben Sie ein Array als Argumenttyp an. Java Reflection Memo (Hishidamas Java Reflection Memo)
Recommended Posts