Comment commencer avec les essais(jMock)
Je suis en train d'apprendre à écrire des tests. Je suis aussi l'apprentissage du Java, on m'a dit que je devrais apprendre/utiliser/pratique jMock, j'ai trouvé quelques articles en ligne qui aident à étendre certaines comme :
http://www.theserverside.com/news/1365050/Using-JMock-in-Test-Driven-Development
http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock
Et la plupart des articles que j'ai trouvé était sur le développement piloté par les tests, écrire des tests d'abord, puis écrire le code pour faire le test. Je ne cherche pas pour l'instant, je suis en train d'écrire des tests déjà existants code avec jMock.
La la documentation officielle est vague pour dire le moins, et tout simplement trop dur pour moi. Quelqu'un at-il une meilleure façon de l'apprendre. De bons livres/liens/tutoriels m'aiderait beaucoup. merci
EDIT - question plus concrète :
http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock - à partir de cet article
Essayé ce pour se moquer de cette classe simple :
import java.util.Map;
public class Cache {
private Map<Integer, String> underlyingStorage;
public Cache(Map<Integer, String> underlyingStorage) {
this.underlyingStorage = underlyingStorage;
}
public String get(int key) {
return underlyingStorage.get(key);
}
public void add(int key, String value) {
underlyingStorage.put(key, value);
}
public void remove(int key) {
underlyingStorage.remove(key);
}
public int size() {
return underlyingStorage.size();
}
public void clear() {
underlyingStorage.clear();
}
}
Voici comment j'ai essayé de créer un test/maquette :
public class CacheTest extends TestCase {
private Mockery context;
private Map mockMap;
private Cache cache;
@Override
@Before
public void setUp() {
context = new Mockery() {
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
mockMap = context.mock(Map.class);
cache = new Cache(mockMap);
}
public void testCache() {
context.checking(new Expectations() {{
atLeast(1).of(mockMap).size();
will(returnValue(int.class));
}});
}
}
Il passe le test et ne fait rien, ce que je voulais créer une carte et de vérifier sa taille, et vous savez travailler quelques variations essayer d'obtenir une poignée sur ce point. Mieux comprendre creux des exemples, quoi d'autre pourrais-je tester ici ou tout autres exercices de m'aiderait beaucoup. tnx
pouvez-vous me donner de réponse concrète les notions de base?J'apprends vite, ne pas dire que je suis plus intelligent que d'autres personnes tout simplement que je suis désireux d'apprendre et d'avoir beaucoup de temps sur mes mains. Donc, si une chose devient ennuyeux, je peux passer à l'autre simple/avancé n'a pas vraiment d'importance. tnx
Vous pouvez écrire vos tests sans un moqueur cadre. Suffit d'utiliser JUnit pour écrire vos tests. Si vous testez votre code couramment et ensuite faire face à un cas où vous ne pouvez pas maître sans se moquer, essayez un moqueur cadre. La nécessité d'une maquette devrait être l'exception, pas la règle.
OriginalL'auteur London | 2010-05-25
Vous devez vous connecter pour publier un commentaire.
Voici un tutoriel sur l'utilisation de JUnit et EasyMock (un moqueur bibliothèque personnellement, je trouve beaucoup plus facile à utiliser que JMock): http://www.michaelminella.com/testing/unit-testing-with-junit-and-easymock.html
Même si vous êtes 100% dédié à l'utilisation de JMock, les concepts entre les deux sont les mêmes, et cela devrait vous aider à mieux les comprendre.
Le but de se moquer, c'est que lorsque vous avez la Classe de test
A
, qui dépend de l'B
etC
, votre test deA
utilise une version fantaisie deB
etC
pour être en mesure de préciser leur comportement exact, plutôt que d'utiliser le réel implémentations deB
etC
dans votre test deA
. Sinon, vous n'êtes pas tester juste la seule unité deA
, vous êtes implicitement testsB
etC
.Certaines bibliothèques ont le soutien de se moquer de classes, et pas seulement les interfaces (EasyMock 3.0 réclamations), mais je ne suis pas très familier avec elle. Se moquant brille lorsque vos classes exprimer des dépendances les uns des autres en fonction de la interface et pas classe.
OriginalL'auteur matt b
Comme un auteur de JMock, je ne voudrais pas commencer avec la technique jusqu'à ce que vous avez de l'expérience avec le TDD. Simplement de commencer avec les bases et le faire fonctionner. Une fois que vous commencez à éprouver des difficultés avec l'échelle et la croissance d'une conception, de revenir à la technique.
Le Dave Astels livre est toujours une bonne introduction et le seul, je pense, de cette génération qui a expliqué se moque bien. Après cela, vous pouvez (ahem) d'envisager de le nôtre, "une Croissance Orientée Objet Logiciel, Guidé par les Tests"
Discount toute personne qui vous dit qu'il est tout au sujet de faire des tests sur le système de fichiers aller plus vite.
OriginalL'auteur Steve Freeman
Vous n'avez pas besoin de vraiment se moquer de tester cette classe comme son seul collaborateur est une Carte qui vous pourriez tout aussi bien utiliser. Aussi votre classe n'a pas vraiment quoi que ce soit (à l'exception de son délégué), qui est pourquoi vous vous sentez comme vous n'êtes pas les tests plus.
Un test droites peut-être (je suis en supposant que vous êtes en utilisant JUnit 4 -- votre code est un étrange mélange de JUnit 3 et 4
avec se moque, il serait (en supposant que la simulation de code est correct -- je ne l'utilise pas JMock)
Dans les deux cas, le programme d'installation le système de réglage de la carte pour avoir les propriétés que vous souhaitez tester et de vérifier ensuite que le cache a les mêmes propriétés (comme c'est un droit délégué).
Je vous recommande de lire JUnit avant de continuer.
OriginalL'auteur Kathy Van Stone
Je ne sais pas où vous êtes allés sur le chemin de l'apprentissage sur l'utilisation des objets fantaisie dans les tests, je vais donc écrire une brève description de vous diriger dans la direction d'un article qui peut vous être utile. Les objets fantaisie sont utilisés dans les tests unitaires à remplacer les dépendances externes qui sont difficiles à créer ou difficile à trouver dans l'état que vous souhaitez pour votre test. Les différents moqueur cadres existants de vous donner des mécanismes pour créer des "faux" des objets qui prennent la place de ces dépendances. Ces objets fantaisie permettra de garder une trace des appels à partir de votre code et vous permettra de faire des déclarations à propos de ces interactions plus tard. Il y a un effet bien connu de l'article sur les objets fantaisie et comment ils se rapportent à des "stubs", une autre commune de la stratégie de test pour la simplification des dépendances externes. Il a été écrit par Martin Fowler et peut être trouvé ici:
http://martinfowler.com/articles/mocksArentStubs.html
Non, les moqueries se fait au niveau de la classe, de sorte que les moqueries cadre de la poignée de la création de la "proxy" (c'est à dire, se moquer) de l'objet pour vous. Gardez à l'esprit que cet objet n'est pas de mettre en œuvre le comportement de l'objet, il est moqueur. Le but est de garder la trace des interactions avec elle et vous permettent de vérifier ces interactions qui s'est passé comme prévu.
merci pour votre explication, comment puis-je tester certaines de ces méthodes?
Je ne recommanderais pas de les simulacres ne sont pas des talons de l'article. Notre compréhension a grandi un peu depuis.
OriginalL'auteur Rob Heiser