Estou escrevendo um projeto de biblioteca Android baseado na classe Android Bitmap (chame-o de AndroindLib), que contém apenas a classe de utilitário (sem atividade). Tentei testá-lo usando o Android JUnit, mas ele continua reclamando que não consegue encontrar o AnroidLib.apk
Qual é a maneira certa de testar a unidade do Android Library Project?
Respostas:
Citando a documentação :
"Existem duas maneiras recomendadas de configurar o teste de código e recursos em um projeto de biblioteca:
Você pode configurar um projeto de teste que instrumenta um projeto de aplicativo que depende do projeto de biblioteca. Você pode então adicionar testes ao projeto para recursos específicos da biblioteca.
Você pode configurar um projeto de aplicativo padrão que dependa da biblioteca e colocar a instrumentação nesse projeto. Isso permite criar um projeto independente que contém os testes / instrumentações e o código a ser testado. "
fonte
Em seu projeto de teste, simplesmente altere o nome do pacote para que seja igual ao pacote de sua biblioteca. Por exemplo, você tem uma biblioteca cujo pacote é
"com.example.lib"
. Crie um projeto de teste visando sua biblioteca. No arquivo de manifesto, você verápackage="com.example.lib.test"
etargetPackage="com.example.lib"
. Basta alterar o pacote de "com.example.lib.test" para "com.example.lib" (targetPackage
deixe como está).Além disso, certifique-se de que a biblioteca seja referenciada ao seu projeto de teste NÃO no caminho de construção Java, mas como uma biblioteca Android normal: no Eclipse, ela deve ser mostrada como biblioteca na
Project->Properties->Android
guia, mas não naProject->Properties->Java Build Path
guia.Em seguida, execute seus testes.
fonte
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ ajuda a descrever o processo necessário para implementar a segunda sugestão na resposta do CommonsWare
fonte
Pela documentação :
Testar um módulo de biblioteca é o mesmo que testar um aplicativo. A principal diferença é que a biblioteca e suas dependências são incluídas automaticamente como dependências do APK de teste. Isso significa que o APK de teste inclui não apenas seu próprio código, mas também o AAR da biblioteca e todas as suas dependências. Como não há um "aplicativo em teste" separado, a tarefa androidTest instala (e desinstala) apenas o APK de teste. Ao mesclar vários arquivos de manifesto, o Gradle segue a ordem de prioridade padrão e mescla o manifesto da biblioteca no manifesto principal do APK de teste.
fonte
NOTA: Esta solução é baseada no uso do Eclipse Indigo (3.8.2) e pode ter que ser implementada de maneira ligeiramente diferente para outro IDE, embora os princípios básicos sejam os mesmos.
Tive problemas semelhantes e descobri que fazer o seguinte sempre funciona:
( NOTA: Estas instruções são para construir um novo grupo de projetos do zero. Se você já construiu partes do grupo de projetos, pode ter que modificar seus projetos para que se conectem da mesma maneira. )
Você deve terminar com três projetos (Android Library, Android Test App, Android Library Tester) semelhantes a este:
Você deve terminar com uma aula para testar sua biblioteca Android semelhante a esta:
Você pode então adicionar qualquer teste que desejar. Você não precisará fazer referência ao Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) para executar seus testes, a menos que eles requeiram acesso a um componente específico do Android (como a pasta Assets, por exemplo). Se você precisar acessar qualquer componente específico do Android, pode fazê-lo modificando o Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) e referenciando-o por meio da instrumentação fornecida pela API Android Junit padrão. (Você pode ler mais sobre isso aqui: http://developer.android.com/tools/testing/testing_android.html )
fonte
Se suas classes de ulitiy não dependem de nenhum código específico do Android, você pode apenas usar os testes de unidade JUnit padrão. Não há necessidade de usar as versões do Android.
fonte