Ao iniciar um projeto com Calabash-android para criar testes automatizados com utilização do Cucumber, me deparei com o erro “App did not start”:
Como havia atualizado algumas Gems, pensei que fosse algo decorrente dessas atualizações e comecei a buscar a causa desse erro. Depois de constatar que não estava relacionado às minhas atualizações, descobri que o erro decorria do uso de permissões no app que estava testando. Faltava a permissão de acesso à Internet no app (:-). Após adicionar a permissão no arquivo AndroidManifest.xml, problema resolvido!
Mas por que isso aconteceu?
Porque o Calabash-android, para interagir com a aplicação que está sendo testada, utiliza o protocolo HTTP entre o seu servidor (que é instalado no device ou simulador onde serão executados os testes) e a aplicação em teste. Assim, sem essa permissão habilitada, não era possível estabelecer uma conexão entre o servidor do Calabash e a aplicação. O seguinte erro foi mostrado no log da aplicação quando da tentativa do Calabash de estabelecer comunicação com a mesma:
Esse log diz que não foi possível abrir um socket para conexão entre a aplicação e o servidor de testes requisitado pelo Calabash devido à permissão negada.
Após adicionar a permissão, gerei um novo apk e foi possível estabelecer a conexão com a aplicação e dar start nela. No log da aplicação no Android Studio vi o seguinte:
Ou seja, \o/.
Ficou alguma dúvida ou tem algo a dizer? Aproveite os campos abaixo! Até a próxima.
***
Artigo publicado originalmente em http://www.concretesolutions.com.br/2016/12/01/erro-app-did-not-start/.