Estou desenvolvendo testes automatizados para um aplicativo Android (usando o Robotium). Para garantir a consistência e a confiabilidade dos testes, gostaria de iniciar cada teste com o estado limpo (do aplicativo em teste). Para fazer isso, preciso limpar os dados do aplicativo. Isso pode ser feito manualmente em Configurações / Aplicativos / Gerenciar aplicativos / [Meu aplicativo] / Limpar dados
Qual é a maneira recomendada de fazer isso programaticamente?
Respostas:
Você pode usar a ferramenta gerenciadora de pacotes para limpar os dados dos aplicativos instalados (semelhante ao pressionar o botão 'limpar dados' nas configurações do aplicativo no seu dispositivo). Então, usando adb, você poderia fazer:
fonte
Error: unknown command 'clear'
.Seguindo a resposta de @ edovino, a maneira de limpar programaticamente todas as preferências de um aplicativo seria
Aviso : o aplicativo forçará o fechamento.
fonte
você pode limpar os dados do aplicativo SharedPreferences com este
e para limpar o aplicativo db, esta resposta está correta -> Limpando o banco de dados de aplicativos
fonte
Na API versão 19, é possível chamar ActivityManager.clearApplicationUserData ().
fonte
Verifique este código para:
fonte
Se você tiver apenas algumas preferências compartilhadas para limpar, essa solução será muito melhor .
fonte
Usando o contexto , podemos limpar arquivos específicos do aplicativo, como preferência, arquivo de banco de dados. Eu usei o código abaixo para testar a interface do usuário usando o Espresso.
fonte
A maneira mais simples de fazer isso é
Isso limpará os dados e removerá o aplicativo da memória. É equivalente à opção limpar dados em Configurações -> Gerenciador de aplicativos -> Seu aplicativo -> Limpar dados.
Isso removerá os dados completamente e forçará o fechamento do aplicativo
fonte
Esta solução realmente me ajudou:
Usando dois métodos abaixo, podemos limpar os dados programaticamente
fonte
se a versão android estiver acima do kitkat, você também pode usá-la
public void onClick (Visualizar exibição) {
fonte
A única opção possível é executar o comando ADB
adb shell pm clear package
antes do teste. O maior problema é que é um tipo de dor de cabeça combinando a execução de testes e os comandos do shell.No entanto, nós (na Mediafe) viemos com uma solução que pode funcionar para você em um dispositivo não raiz comum. Tudo que você precisa fazer é adicionar uma anotação. Todo o resto é feito executando o script bash simples .
Basta adicionar
@ClearData
anotação antes de QUALQUER dos seus testes e tada 🎉, o comando ADB clear será executado antes da execução do teste.Este é um exemplo desse teste:
A ideia é a seguinte
adb shell am instrument -e log true
Usando a mesma idéia, todas essas opções podem ser facilmente suportadas:
Use apenas anotações. Como isso:
Bônus! 🎁 Para cada teste com falha:
Em geral, é fácil adicionar mais opções, pois os testes são executados um a um a partir do script bash, em vez da tarefa gradle.
📗 A publicação completa do blog : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
Code O código fonte com exemplos : https://github.com/medisafe/run-android-tests
Espero que isso responda 6 anos pergunta;)
fonte