Mocker le comportement de Class.forName()
Bonjour,
Avant d'exposer le souci (même si le titre en dit long) voici la fonctionnalité que je souhaite tester : la fonction renvoi Vrai si le fichier passé en paramètre est un fichier .class et si il extends Plugin.class.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
public class FileNameFilter {
public boolean accept(File file) {
String fileName = file.getName();
try {
return (fileName.endsWith(".class")
&& Class.forName(fileName).isAssignableFrom(Plugin.class));
} catch (ClassNotFoundException e) {
return false;
}
}
} |
Jusque là rien de sorcier, j'ai mocké le fichier à passer en paramètre de la fonction et j'ai défini la valeur retourné par la fonction .getName() mais ça coince au moment de mocker Class.forName().
En effet, Mockito ne semble pas capable de redéfinir le comportement de cette classe, ce qui entraine une levée d'exception lors de l'appel à la méthode...
J'ai cherché du côté de PowerMock sans trouver de solution. J'en arrive à me dire que je vais devoir faire l'impasse sur le test de cette fonctionnalité, simple certe, mais abandonner le test de la première chose qu'on code c'est pas terrible je trouve :s
Avez vous des idées/solutions/pistes afin que je puisse quand meme tester ces quelques lignes de codes ?
Merci d'avance.