Unité: Comment écrire des cas de test en utilisant jUnit et Mockito
Je suis très nouveau à Mockito et jUnit et TDD, en général, et j'essaie d'apprendre la bonne façon de faire des TDD. J'ai besoin de couples d'exemple pour lancer mon cerveau. DONC, s'il vous plaît aider moi
J'ai donc une méthode getNameInc(String dirPath, String filenName)
. Donc, étant donné un nom de fichier comme bankAccount.pdf
, et si, dans ce dossier, pas de nom de fichier bankAccount.pdf
, puis retour bankAccountAA.pdf
. Si il existe un bankAccount.pdf
puis return bankAccountBB.pdf
La increment
est AA-ZZ
. Lorsque l'atteindre ZZ
puis il revenir à AA
. J'ai déjà de mettre en œuvre la logique de cette méthode. Comment puis-je l'unité de tester cette méthode à l'aide de Mockiti et jUnit?
MODIFIER
Ici, c'est la classe et les méthodes qui sont impliqués.
public class PProcessor{
private final Map<Integer, String> incMap = new HashMap<Integer, String>();
private String getNameInc(String dirPath, String filenName){
String[] nameList = new File(dirPath).list(new FilenameFilter(){
public boolean accept(File file, String name) {
//only load pdf files
return (name.toLowerCase().endsWith(".pdf"));
}
});
//Return the number of occurance that a given file name appear
//inside the output folder.
int freq = 0;
for(int i=0; i<nameList.length; i++){
if(fileName.equals(nameList[i].substring(0, 8))){
freq++;
}
}
return incMap.get(freq);
}
private void generateIncHashMap(){
incMap.put(new Integer(0), "AA");
incMap.put(new Integer(1), "BB");
incMap.put(new Integer(2), "CC");
...
}
}
generateIncHashMap()
sera appelée dans le constructeur de pré-générer le hachage de la carte
J'ai déjà implémenter la logique. La méthode
getNameInc(String dirPath, String fileName)
est déjà mis en place par moi. Je me demande juste comment l'unité de test. Il peut être mockito ou tout simplement l'jUnit. J'essaie d'apprendre l'idée.content que vous souhaitez utiliser TDD! Mais les sons à partir de votre dernier commentaire que vous avez écrit la logique de la première... qui est à l'opposé de TDD œuvres. Premier à écrire un test qui échoue, puis faire le test avec du vrai code, puis refactoriser le code de sorte qu'il est plus propre, mais ne fait pas plus de passer le test. Ensuite, écrire un autre test en échec. Mockito est là pour vous aider à talon complexe des services que votre classe dépend. Pouvez-vous mettre à jour votre question avec les classes qui collaborent à cette fonctionnalité?
- Je mettre à jour mon post avec quelques codes. Pouvez-vous jeter un coup d'œil.
OriginalL'auteur Thang Pham | 2011-05-17
Vous devez vous connecter pour publier un commentaire.
Que vous essayez de tester votre getNameInc(..) la méthode, je suppose. Quand vous l'appelez, il cherche les fichiers dans le répertoire que vous spécifiez, et basé sur ce qu'il trouve, décore le nom que vous avez donné.
Pour faire la classe de l'unité-testable, vous devriez résumé de la dépendance sur le système de fichiers, de sorte que, dans un simulacre, vous pouvez simuler quel que soit le contenu d'un répertoire que vous voulez. Votre classe accepte une instance de cette interface comme une dépendance, et de l'appeler pour savoir ce qui est dans le répertoire. Lorsque vous utilisez la classe dans votre programme pour de vrai, vous devrez fournir une implémentation de cette interface que les délégués à la JDK système de fichiers d'appels. Lorsque vous l'unité de test de la classe, vous devrez fournir Mockito se moque de cette interface.
Éviter de mettre trop de logique dans le FilesystemImpl de la classe, puisque vous ne pouvez pas écrire une stricte unité de test pour elle. Garder un très simple wrapper autour du système de fichiers, de sorte que tous les intelligente truc est en Yourclass, ce qui vous permettra de beaucoup écrire des tests unitaires pour.
Car il y a beaucoup de chevauchement entre les tests, vous auriez probablement créer une méthode de configuration et de faire le travail il y, et de créer des variables d'instance pour les tests à utiliser:
FilesystemImpl
une classe qui implémenteFilesystem
plutôt qu'uninterface
?Vous avez raison, j'ai corrigé.
OriginalL'auteur Ladlestein
Pour ce que vous avez décrit là, je ne vous embêtez pas avec Mockito, il ne semble pas être quelque chose pour se moquer (parce qu'il est facile de manipuler le système de fichiers).
Je test ...
- Qu'advient-il si je l'appelle getNameInc et il n'y a pas de correspondance de fichiers déjà
- Qu'advient-il si je l'appelle getNameInc et il y a des fichiers AA-AA il y a déjà
- Qu'advient-il si je l'appelle getNameInc et fichier ZZ est-il déjà
Le point de TDD, c'est que vous devriez avoir déjà écrit ces tests et de mise en œuvre de votre code pour effectuer les tests passent. De sorte que vous ne sera pas vraiment faire TDD, car vous avez déjà le code.
OriginalL'auteur sMoZely