Domanda

Sto cercando di integrare l'esecuzione di Fitnesse test da MSBuild im mio nightly build sul TFS.

Nel tentativo di renderlo autonomo, vorrei iniziare il seleniumRC server solo quando è necessario, dal fitness.

Ho visto che c'è una "Linea di Comando Apparecchio" ma è scritto in java posso usare quella?

È stato utile?

Soluzione

Penso che si potrebbe essere in grado di.È possibile chiamare qualsiasi processo facilmente in MSBuild utilizzando il attività.Tuttavia, il problema con questo è che la exec compito di attesa per il Selinium processo di finitura prima di continuare, che non è il bahaviour si desidera.Si desidera eseguire il processo, mantenere in esecuzione durante il vostro costruire e poi lo strappo giù come costruire finiture.

Pertanto, penso che probabilmente si sta andando ad avere bisogno di creare un custom attività MSBuild per fare questo.Vedere il seguente post per un esempio di attività che una persona ha creato che verrà eseguito in modo asincrono di restituire il controllo indietro per gli script di build:

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

E per un esempio di chiamata di un programma Java da MSBuild (ma in questo caso in modo sincrono) date un'occhiata al mio compito che richiede Ant da MSBuild qui

http://teamprise.com/products/build/

Come parte della vostra attività MSBuild, si vuole in uscita l'id del processo che si è creato per una uscita di proprietà in modo che, alla fine del vostro script di build si può chiamare un'altra usanza attività MSBuild che uccide il processo.Si può fare questo, cercando per l'id di processo passati come una variabile di MSBuild e quindi chiamare Processo.Uccidere metodo, cioè

Process process = Process.GetProcessById(ProcessId);
process.Kill();

Detto questo, si avrebbe bisogno di essere attenti a garantire che il vostro kill compito è stato sempre eseguito in MSBuild da rendere sicuro che è stato incluso nel corso di errore ciclabili, ecc nel costruire.Probabilmente si potrebbe rendere le cose un po ' più resistenti, rendendo il selenium RC starter compito di cercare altre seleniumRC processi e la loro uccisione prima di cominciare un nuovo che modo, se un processo non chiuso correttamente per qualche motivo, si tratterebbe solo di eseguire fino alla prossima generazione.

Comunque la mia risposta suona come un sacco di lavoro, quindi speriamo che qualcun altro si venire con un modo più semplice.Si potrebbe essere in grado di creare il seleniumRC del processo in la suite di test di start up del FitNesse test e uccidere nella suite abbattere, o si potrebbe essere in grado di scrivere un'attività personalizzata che si estende a FitNesse runner compiti e accende seleiniumRC asynronously prima di eseguire il processo di test e poi lo uccide dopo.

Buona fortuna,

Martin.

Altri suggerimenti

Grazie per le risposte!

Questo è come ho fatto finora.

Ho fatto un fit apparecchio (molto semplice) che avvia un processo con il cavo di linea di comando, nel mio caso startSelenium.bat.L'apparecchio ritorna l'Id così posso store che nel mio fitnesse contesto e chiudere la sessione successiva.

Ora posso fare un SuiteSetUp pagina nel mio fitnesse test che assomiglia a questo.

|RunCommandFixture|

|Riga Di Comando|RunCommand?|

|C:\Projects...\startSeleniumRC.bat|>>seleniumprocess|

e un SuiteTearDown come questo

|RunCommandFixture|

|Id|StopCommand?| |<

Che funziona per me.Non selenium RC inizia con la richiesta da parte di mio fitnesse test.

Scrivere un semplice .NET app che fa un Processo.Start("selenumRC riga di comando") che viene gestito da uno script di build?

Se non si è troppo in basso il Selenio percorso;potrei suggerire che si guarda di simile .NET browser di strumenti di automazione;in particolare WatiN o ArtOfTest.Il "pile" in questi completamente .NET, in modo da farli in esecuzione su macchine diverse è molto più facile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top