Quand je regardais le code de test écrit dans JUnit aujourd'hui, le test de la méthode privée n'était pas écrit. J'ai créé un échantillon qui appelle une méthode privée, alors j'ai pensé le poster.
Postscript Pour plus de détails, veuillez vous référer au commentaire de @ Kilisame, mais ce n'est pas un article qui dit que je l'ai testé car j'ai oublié de tester privé. Il est difficile de dire que le test public de l'appelant ne peut pas être fait ... (j'aimerais que vous compreniez), alors je l'ai écrit parce que je voulais au moins faire un test privé.
import static org.junit.Assert.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.Test;
/**Exemple de classe*/
public class private_Test {
public class Sample{
private int fuge(int i) {
return i;
}
}
@Test
public void test() {
Sample sample = new Sample();
try {
Method method = Sample.class.getDeclaredMethod("fuge", int.class);
method.setAccessible(true);
int rtn = (int)method.invoke(sample, 2);
assertEquals(2,rtn);
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
}
}
Vous pouvez obtenir la méthode avec la méthode getDeclaredMethod (), autoriser l'accès externe avec setAccessible (true) et l'exécuter avec method.invoke ().
Recommended Posts