Les tests de Chameau avec MockEndpoints

J'ai une série de "pipeline" des composants qui communiquent par le biais de ActiveMQ files d'attente de messages. Chaque composant utilise Chameau pour traiter chacune de ces files d'attente comme un point de Terminaison. Chaque composant utilise le même modèle de base:

Les tests de Chameau avec MockEndpoints

Où chaque composant consomme les messages d'une file d'attente d'entrée, le message(s), et ensuite les endroits 1+ messages sur un aller/file d'attente de sortie. La "sortie" de la file d'attente devient alors le "input" de la file d'attente pour le prochain volet de la chaîne. Assez basique.

Je suis maintenant en train de se retrousser mes manches et de fournir des tests unitaires pour chaque composant à l'aide de la MockEndpoints fournis par Chameau de test de l'API. J'ai été coulée sur la javadoc et les quelques exemples à dos de Chameau site internet, mais éprouve des difficultés à se connecter tous les points.

Il me semble que, pour chaque composant, une partie de mon test unitaire est va vouloir accomplir les trois choses suivantes:

  • Test pour voir si il y a des messages en attente sur un particulier de "l'entrée" dans la file d'attente
  • Tirer de ces messages et de les traiter
  • De faire passer des messages à une "sortie" de la file d'attente et de vérifier qu'ils ont fait il y

Je croire j'ai besoin de créer MockEndpoints pour chaque file d'attente de la sorte:

@EndpointInject(uri = "mock:inputQueue")
protected MockEndpoint intputQueue;

@EndpointInject(uri = "mock:outputQueue")
protected MockEndpoint outputQueue;

Donc maintenant, dans mon JUnit méthodes de test, je peux créer des attentes et d'interagir avec ces paramètres:

@Test
public final void processMethodShouldSendToOutputQueue()
{
    Component comp = new Component();
    comp.process();

    outputQueue.assertIsSatisfied();
}

Je ne suis pas la compréhension de la façon de câbler le tout correctement:

  • Comment puis-je connecter comp à la inputQueue et outputQueue MockEndpoints?
  • Pour chaque MockEndpoint, comment puis-je définir des attentes de façon à ce que assertIsSatisfied() vérifie qu'un message est présent à l'intérieur d'une file d'attente particulière, ou que l'un particulier de la file d'attente contient des messages?

OriginalL'auteur IAmYourFaja | 2011-12-20