2012-06-29 14 views
5

Sto cercando di avvolgere la mia mente attorno ad Arquillian e sto solo non comprendendo la differenza tra la modalità in-container e la modalità as-client.Arquillian Run Modes

mia comprensione è che, con Arquillian/ShrinkWrap:

  • Si crea un archivio che contiene solo i componenti che si desidera integrare e testare con
  • lo streaming di questo archivio in memoria a un contenitore reale (distribuirlo)
  • si esegue l'archivio come un test all'interno del contenitore
  • si effettua un'affermazione di ciò che accadrà in seguito a quella prova

Quindi, dal mio punto di vista, tutto solo "sembra" come se fosse sempre in-container, poiché i test sono sempre eseguiti all'interno di un contenitore.

Per favore aiutami a capire le differenze tra queste due modalità e quali tipi di test di integrazione sono adatti per entrambe le modalità. Punti bonus per fornire un esempio di codice concreto (e non quelli vaghi direttamente dalla Guida di riferimento!) Che spiegano perché/come si eseguono i test in entrambe le modalità. Grazie in anticipo!

risposta

1
  • in-contenitore: utilizzo per la scatola bianca, test di integrazione
  • come-client: utilizzo per la scatola nera, test funzionali

cioè, per i test UI/funzionale (" come "il ruolo di un" cliente "che utilizza l'app in produzione) usa la modalità as-client con @RunAsClient. Per veri test di integrazione (verifica le dipendenze tra classi in cui è necessaria la conoscenza interna della "scatola bianca" sull'app stessa), utilizzando la modalità in-container.

In entrambi i casi ShrinkWrap e Arquillian distribuiscono l'archivio in memoria (JAR/WAR/EAR) direttamente nel contenitore configurato (tramite un protocollo di streaming JBoss-homegrown), tuttavia quando i test vengono eseguiti in modalità diverse hanno accesso diverso al contenitore in base alla modalità di test.

+0

Capisco la differenza tra i test di whitebox e blackbox ma non riesco nemmeno a ottenerlo con il test in modalità client. vuol dire che l'archivio compresso in modalità client non viene distribuito nella stessa app sotto test ma viene distribuito in un'app separata in modo che ci sia una configurazione di tipo client/server? se in modalità client l'archivio shrinkwrap viene anche distribuito nell'app sotto test, non vedo ancora la differenza tra le due modalità. :( – dragonsfire