Pergunta

Estou tentando integrar testes de fitness em execução do msbuild, sou minha construção noturna no TFS.

Na tentativa de torná -lo independente, gostaria de iniciar o servidor Seleniumrc apenas quando for necessário a partir da aptidão.

Vi que existe um "equipamento de linha de comando", mas está escrito em Java, posso usar isso?

Foi útil?

Solução

Eu acho que você pode ser capaz. Você pode ligar para qualquer processo facilmente no msbuild usando o tarefa. No entanto, o problema de fazer isso é que a tarefa Exec aguardará o processo do Processo Selinium antes de continuar, que não é o bahaviour que você deseja. Você deseja executar o processo, mantê -lo funcionando durante a compilação e depois o derrube enquanto o seu acabamento de construção.

Portanto, acho que você provavelmente precisará criar uma tarefa personalizada para fazer isso. Veja a postagem a seguir para obter um exemplo de tarefas que alguém criou que executará de volta o controle de volta ao Script de Build: Build:

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

E para um exemplo de chamar um programa Java da MSBuild (mas neste caso de síncrona), dê uma olhada na minha tarefa que chama Formiga de msbuild aqui

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

Como parte da sua tarefa MSBuild, você deseja produzir o ID do processo que você criou para uma propriedade de saída para que, no final do seu script de compilação, você possa chamar outra tarefa personalizada do MSBuild que mata o processo. Pode fazer isso procurando o ID do processo passado como uma variável no msbuild e depois ligar Process.kill Método IE

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

Dito isto, você precisaria ter cuidado para garantir que sua tarefa de matar fosse sempre executada no MSBuild, certificando -se de que ela foi incluída durante os caminhos de erro etc. na construção. Você provavelmente poderia tornar as coisas um pouco mais resistentes, tornando a tarefa inicial do Selênio RC procurar outros processos do Seleniumrc e matando -os antes de iniciar um novo - dessa maneira, se um processo não fosse fechado corretamente por algum motivo, ele só funcionaria até a próxima construção.

De qualquer forma - minha resposta parece muito trabalho, então espero que outra pessoa tenha uma maneira mais fácil. Você pode criar o processo de Seleniumrc na inicialização do conjunto de testes dos testes de fitnesse e matá -lo na suíte desmotada, ou poderá escrever uma tarefa personalizada que estenda suas tarefas do corredor da fitness e aciona o seleiniumrc assínomente antes Executar o processo de teste e depois mata depois.

Boa sorte,

Martin.

Outras dicas

Obrigado por suas respostas!

Foi assim que fiz até agora.

Fiz um acessório de ajuste (muito simples) que inicia um processo com a linha de comando fornecida, no meu caso StartSelenium.bat. O acessório retorna o ProcessID para que eu possa armazenar isso no meu contexto de fitness e fechar essa sessão posteriormente.

Agora posso fazer uma página do SluesSetup no meu teste de fitnesse que se parece com isso.

| RunCommandfixture |

| CommandLine | RuCommand? |

| C: Projects ... startSeleniumrc.bat | >> SeleniumProcess |

e um sufocas como este

| RunCommandfixture |

| ProcessId | StopCommand? |

Isso funciona para mim. Nenhum RC de selênio começa mediante solicitação do meu teste de fitnesse.

Que tal escrever um aplicativo .NET simples que faz um processo.start ("selenumrc commandline") que é executado pelo seu script de construção?

Se você não estiver muito longe na rota do selênio; Posso sugerir que você olhe para ferramentas semelhantes de automação do navegador .NET; Especificamente Watin ou Artoftest. As "pilhas" são completamente .NET, portanto, executar em diferentes máquinas é muito mais fácil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top