Este artigo necessita de uma revisão técnica. Como posso ajudar.
Como parte do código-fonte Gaia / B2G, fizemos vários testes de unidade disponíveis para execução, para testar diferentes aspectos de Gaia e B2G. Este artigo explica como acessá-los.
Nota: Este documento assume que você entenda completamente como trabalhar com Gaia e B2G. Consulte Desenvolvendo Gaia para se familiarizar.
Rodando testes de unidade
Você pode rodar testes de unidade no B2G desktop, Firefox Nightly ou Mulet. Você também precisará da última versão Gaia repo. Para a maioria das funcionalidades, você também precisa ter o Node.js e o NPM instalados.
Aviso: Nós provavelmente vamos descontinuar a execução de testes no Firefox em breve. Utilize Mulet a partir de agora.
Nota: Se os seguintes comandos falharem com erros criptográficos ao instalar dependências do tipo test-agente, pode ser que a suas versões Node.js / NPM sejam muito antigas. Leia Instalando Node.js via gerenciador de pactoes Node.js via gerenciador de pacotes para instalar as versões mais recentes e exclua a pasta node_modules/test-agent
.)
Nota: No Ubuntu (e possivelmente alguns outros Linux distros também), Node.js é chamado nodejs e node é chamado de programa Amateur Packet Radio "Node". Se você está recebendo um problema com a execução de testes unitários nesses sistemas (mensagens de erro podem significar que "Esta falha pode ser devido ao uso de legado binário 'node'"), então você deve instalar o pacote node nodejs-legacy. Isso impede que um conflito com o Programa Amateur Packet Radio "Node", removendo /usr/sbin/node
e transformando-o em um link simbólico para /usr/bin/nodejs
, que deve tornar as coisas funcionarem conforme o esperado.
A repo Gaia contém um script bin / gaia-teste bastante acessível, que ajuda executar os testes de uma maneira mais fácil.
Aviso: este script irá gerar um perfil adequado para testes de unidade no perfil-debug. Se você já tem outro perfil neste diretório ele será substituído. O Bug 980496 visa torná-lo configurável.
Lançando o executor de testes de Mulet ou Firefox
Isto irá rodar o servidor de teste e lançar o seu Firefox padrão como encontrado no caminho:
bin/gaia-test
Escolhendo Firefox binário
Você pode exportar a variável de ambiente do Firefox para o seu binário firefox. Por exemplo, no OS X:
export FIREFOX=/Applications/FirefoxNightly.app/Contents/MacOS/firefox
Alternativamente, você pode passá-la como argumento para bin/gaia-teste:
bin/gaia-test <gaia directory> <firefox path>
Lançando o executor de testes no B2G desktop
Isto irá baixar e lançar o B2G área de trabalho:
bin/gaia-test -d
Execute os testes a partir da interface Web
Você pode simplesmente clicar em testes específicos e, em seguida, no botão Executar.
Execute os testes a partir da linha de comando
Com o servidor WebSocket running, e o app Test Agent em execução no B2G Desktop / Firefox Nightly, execute o seguinte comando:
make test-agent-test
Se você só deseja executar testes de um aplicativ,o você pode especificar quais via variável env APP:
make test-agent-test APP=calendar
Você pode também fornecer, opcionalmente, um repórter para formatar a saída do teste: reporter to format the test output:
make REPORTER=List test-agent-test
Execute os testes enquanto você salva
Quando o servidor está em execução, os testes para um arquivo são executados automaticamente quando um arquivo é salvo ou mesmo quando ele é tocado:
- Quando você salvar um arquivo de teste, o próprio arquivo de teste é executado.
- Quando você salvar um outro arquivo, ele encontra um arquivo correspondente no diretório test / unit, usando como sufixo o nome do arquivo com
_test.js
.
Nota: ele observa somente arquivos existentes, então se você criar um novo arquivo, você tem que reiniciar o agente.
A execução de testes como Buildbot faz
Testes de unidade no Gaia Buildbot são executados usando um executor separado; isto explica como usá-lo. Por favor, consulte os documentos virtualenv se você não estiver familiarizado com o uso de um virtualenv Python.
virtualenv venv source venv/bin/activate cd $GAIA/tests/python/gaia-unit-tests python setup.py develop cd gaia_unit_test python main.py --binary /path/to/b2g/desktop/build --profile /path/to/gaia/profile
Nota: Ao especificar o caminho para a construção de desktop B2G, você deve especificar o caminho para B2G-bin, se ele existir, caso contrário use B2G.
O perfil de Gaia deve ser feito usando o seguinte:
NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make
Por padrão, este perfil será gerado no $ GAIA/profile-debug
. O bin/ gaia-teste
gera o mesmo perfil, de modo que você não precisa regenerá-lo se você já tiver executado o gaia-teste.
Desativando um teste de unidade gaia em automação
Automação usa uma lista negra para excluir certos testes de unidade gaia de serem executadas. Para evitar que um teste de correr em automação, adicione seu caminho para https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-unit-tests/gaia_unit_test/disabled.json.
Configurando o seu app Gaia
Embora este guia possa ajudar a tornar as coisas mais fáceis, a melhor maneira de aprender a escrever, criar e executar testes ainda está em olhar para o código-fonte; em particular, nos testes de galeria.
Carregando seus próprios arquivos de teste
Nota: Esta é uma técnica avançada e totalmente opcional. Se o carregador de testes nativo do test-agent estiver funcionando em sua aplicação, assim como o seu teste de estilo, e você não quiser usar seus próprios arquivos de teste, esta seção não é para você!
O test-agent carrega seus arquivos de teste em um ambiente onde eles têm acesso a mocha (assim como outros bits de estado global). Um test-agent global importante é o require, que permite que o seu arquivo de teste carregue uma dependência (código da aplicação, por exemplo). Às vezes, principalmente se os seus arquivos de aplicativos estiverem esperando para serem carregados de uma maneira diferente da exigência do test-agent, ele pode ser útil para substituir o carregador de arquivo de teste do test-agente. Você também pode fazê-lo da seguinte maneira:
// setup.js testAgentRuntime.testLoader = function(path) { // We're going to return a promise to represent // the loading state of the test file at this path. return new Promise((accept, reject) => { // Load the parameter test file and resolve (or reject) appropriately // ... }); };
Usando simulações
TBD
Avançado: o que é que o script faz?
Gerando um perfil
Você precisa de um perfil que é gerado por este comando:
NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make
Isso gera um perfil de depuração no gaia/profile-debug, substituindo um perfil anterior, se você já tiver um.
DEBUG=1
permite a extensãohttpd.js
que torna possível usar diretamente os arquivos do diretórioapps/
.NO_LOCK_SCREEN=1
desativa a tela de bloqueio, que é necessária na área de trabalho B2G , porque não é possível desbloqueá-la usando o mouse.DESKTOP=0
desativa os outros addons que normalmente usamos no modo de depuração para executar o Gaia no Firefox.
Inicie o servidor WebSocket
O agente de teste (o corredor de teste) vem com um servidor WebSocket construído que permite que você envie uma mensagem remotamente ao navegador ou dispositivo para fila de teste. Muitas vezes você poderá querer desenvolver utilizando recursos de economia de tempo como um observador de arquivo que irá executar os testes quando um arquivo de teste ou implementação mudar. Para aproveitar destas características você precisa iniciar o servidor:
make test-agent-server
O servidor WebSocket fornece outras ferramentas durante o uso, como por exemplo, um repórter de linha de comando para os resultados do teste (assista ao terminal no qual você executou o comando), um repórter Growl, as notificações de erro de sintaxe, e muito mais.
O agente também assiste alterações nos arquivos, automaticamente executa os testes associados. Ele é executado quando você salva o teste ou se você salva o arquivo testado (nós usamos a convenção na qual o nome do arquivo de teste é o nome do arquivo testado com _test
anexado, veja abaixo para mais exemplos). Ela vê apenas os arquivos existentes, então se você criar um novo arquivo, você terá que reiniciar o agente.
Executando testes unitários com o Firefox Nightly
Você pode lançar Gaia no Firefox Nightly com os seguintes comandos:
cd <path to gaia> <path to nightly>/firefox --no-remote -profile <path to gaia>/profile-debug/ https://test-agent.gaiamobile.org:8080/
Nota: No OS X, o caminho do perfil deve ser um caminho absoluto
Você pode usar o Firebug ou o depurador integrado para depurar os testes; use a palavra-chave depurador para quebrar no depurador.
Executando testes unitários com B2G desktop
Inicie o Gaia e o app "Test Agent". A partir do app gent Teste você pode selecionar os testes para executar a partir da interface do usuário.
Avançado: como é que o agente de teste funciona?
O agente de teste vive em seu próprio repositório Github. Você pode dar uma olhada lá para entender como ele funciona sob o capô.