Se Moquant De Java InputStream
Veuillez fournir des indications pour m'aider à me moquer de qui java objet InputStream.
C'est la ligne de code que je souhaite Maquette:
InputStreamReader inputData = new InputStreamReader(System.in);
bufferdReader = new BufferedReader(inputData);
bufferdReader.readLine();
- Est votre problème le Système.dans ? Vous voulez probablement de refactoriser le code pour qu'un autre InputStream est passé à la place de Système.dans ; ensuite, vous pouvez utiliser n'importe quel Moqueur cadre (comme mentionné dans les réponses) pour se moquer de cette InputStream.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser commons-io pour créer certains stub les flux d'entrée:
toInputStream("someString", "UTF-8")
. La version avec une seule Chaîne en tant que paramètres est obsolète.Vous pouvez simplement utiliser un
ByteArrayInputStream
et de le remplir avec vos données de test.@Brad exemple de commentaires:
ByteArrayInputStream
prend en chargemark()
etreset()
InputStream anyInputStream = new ByteArrayInputStream("test data".getBytes());
ByteArrayInputStream
est bon à utiliser avec la chaîne JSON?Je suis en désaccord avec la réponse à cette question. Se moquant de cadres comme Mockito sont gentils et tout, mais lorsque la norme api java est disponible, vous pouvez envisager d'utiliser à la place.
c'est à dire
Pourquoi utiliser un objet Fantaisie dans vos classes de test quand vous pourriez utiliser un vrai de vrai avec tous ses état et le comportement?
Pour en savoir plus sur la façon dont cela fonctionne, vous pourriez chercher le "décorateur" design pattern.
InputStream
?Changer votre objet de sorte qu'il est plus facile à tester, quelque chose comme ceci:
puis lorsque vous utilisez votre objet initialiser ses inputStream première:
Maintenant, vous avez un objet où vous pouvez le tester à l'aide de la mise en œuvre d'InputStream vous voulez (ByteArrayInputStream est une bonne idée d'essayer).
La meilleure solution que j'ai trouvé est d'utiliser
puis les envelopper le inpustream dans bufferedReader meilleur moyen de test d'écriture autour des Flux d'entrée
En supposant que vous utilisez Maven, vous pouvez mettre une ressource en "src/test/resources/dossier" disons "src/test/resources/wonderful-mock-data.xml". Puis, en vous jUnit votre peut faire:
Dans cet exemple, l'url varialble sera null si la ressource ne peut pas être trouvé à l'intérieur de courant classpath. Cette approche permet de mettre plusieurs scénarios à l'intérieur de différents resourceInputFile(s)... rappelez-vous Aussi que tous les types de ressources en vertu de l' "src/test/resources/" (et pas seulement des fichiers xml, tout comme txt, html, jpeg, etc.) sont normalement disponibles que classpath ressources de l'ensemble des tests jUnit.