Suggestions pour java se Moquer de Fichier (pour se moquer de java.io.Fichier)
Quelqu'un aurait-il des suggestions pour java se moquer de Fichier de l'objet?
Je Suis à l'aide d'un tiers de la classe qui ont besoin d'obtenir un java.io.Objet de fichier comme argument.
- Je recevoir les données de ce fichier dans un flux de données sur un site web (aussi l'un de leurs produits).
Une solution est d'écrire toutes ces données dans un fichier et de les offrir à la classe. C'est une solution que je n'aime pas: il emporte l'avantage d'utiliser le webservice au lieu de simplement télécharger le fichier.
Plus rapide et plus efficace serait de mettre ces données à partir de la mémoire dans un Simulacre de Fichier et d'offrir ce Simulacre de Fichier pour le tiers de la classe.
Il faudrait probablement un MockFile l'extension de la java.io.Fichier et en remplaçant toutes les fonctions réelles de l'interfaçage avec le fichier sur le disque dur.
Je sais que le tiers doit avoir utilisé un flux comme un argument d'entrée à la place d'un fichier. Cependant, c'est au-delà de mon influence.
Comme il est marqué ci-dessus, ce package semblent offrir la solution, je Suis à la recherche d'... vous permettra de savoir si c'est utile.
Merci pour toutes les réponses... Il apears pour moi une Maquette de Fichier n'est pas la solution... la seule chose que je peux faire, c'est de faire une extension de Fichier objet qui génère automatiquement un fichier et donnez-la à la un tiers de la classe. Pour ce que je voulais.... le tiers de la classe devrait avoir à accepter un InputStream comme argument. Mais cela peut aussi être fait à l'aide de la suggestion au sujet de l'emballage. Un peu frustrant le tiers de la classe accepte uniquement un fichier.
OriginalL'auteur michel.iamit | 2010-06-30
Vous devez vous connecter pour publier un commentaire.
C'est juste une suggestion basée sur ma compréhension de votre question.
Je crois, vous devez être en train de faire quelque chose comme cela,
Les objets fantaisie plus de sens à partir d'une unité de point de vue test.
Votre objectif n'est pas de test de l'unité de la troisième partie de la bibliothèque de fonction.Alors qu'il est à l'unité de test de la méthode doSomething (). Alors, probablement, vous pouvez créer un wrapper autour de la fonction de tiers.Peut-être que quelque chose comme cela,
Maintenant, vous pouvez créer une maquette wrapper(mise en place de la même interface) et l'utilisation de cette maquette wrapper pour tous vos junit cas.
Bienvenue et bonne chance.
OriginalL'auteur
La classe testée seule requête de la maquette nom du Fichier, les attributs, etc., ou est-il réellement essayer d'ouvrir le fichier?
Dans le premier cas, vous pouvez facilement créer votre maquette par exemple à l'aide EasyMock ou un équivalent moqueur cadre.
Le dernier cas est plus délicat, et j'ai peur, si le flux d'entrée est créé en interne par la classe, vous n'avez pas d'autre choix que fait la création d'un véritable fichier de test sur le HD.
le problème est,
File
"n'est qu'une représentation abstraite de fichier et de répertoire des chemins d'accès" (à partir de la Javadoc). Si vous ne pouvez pas lire directement à partir de la - vous besoin d'ouvrir unFileInputStream
(ouFileReader
) pour que les.Je sais, donc besoin de renvoyer un fichier inputstream à partir de ce simulacre de l'objet fichier. Merci pour les aider et de réflexion, La suggestion ci-dessous semble offrir la recherche de la solution....
Une partie de ce que vous avez suggéré de leeds à ma fin conclusion, ce que je veux ne peut pas être fait. Besoin de faire un fichier. L'emballage ne peut être utilisé pour générer automatiquement un temp. fichier. Pour ce que je veux, le tiers doit ajouter une option pour passer un inputstream en place du Fichier.
Il peut ne pas être la meilleure solution dans ce cas, mais vous se moquer d'un flux d'entrée (et de n'importe quoi d'autre) avec le JMockit se moquant de la bibliothèque. Même si ce flux est créé à l'intérieur de la troisième partie de la classe.
OriginalL'auteur
Vous pouvez charger la 3ème partie du code à l'aide d'un ASM en fonction de chargeur de classe que les cartes de
java.io.File
à votre propre "faux" de la mise en œuvre. C'est un peu de travail, et doit être effectuée avec soin... Par exemple, vous aurez besoin de la carteFileInputStream
, etc.OriginalL'auteur
Vous n'utilisez pas de fichiers (ou de toute dépendance extérieure dans les tests Unitaires). Sauf à l'aide d'objets fantaisie, vos approches se traduira dans les essais problématiques.
Voir cette javaranch article pour plus d'
OriginalL'auteur