Android – Compartilhar código entre teste unit e instrumental ( Sharing code between unit tests and instrumentation tests on Android )

android_testing-1

Suponhamos que você tenha uma aplicação android com uma serie de testes. Alguns deles são testes unitários (unit tests), localizados em: src/test, e testes instrumentais (intrumentation tests), localizados em: src/androidTest.

O problema encontrado é que muitas vezes temos códigos que poderiam ser compartilhados entre esses testes, mas não temos como fazer isso pois estão em pastas diferentes, e não seria adequado inserir esses códigos auxiliares no src/main.

A solução encontrada é acrescentar um novo pacote de testes que seja compartilhado entre o src/test e o src/androidTest, para isso vamos criar um src/sharedTest e configurar o sourceSets do test e androidTest para visualizar o sheredTest.

Para isso primeiramente vamos criar o novo pacote de testes: src/sharedTest/java/{pakage_do_projeto}
Obs: Importante criar o package do projeto para assimilar com os outros testes.

Agora basta configurar o build.gradle da seguinte maneira: Continue reading

Android – Accessing hidden method Ljava/lang/Thread – Coroutines do not log uncaught exceptions in Android

kotlin_android_ktVerificar Issue: https://github.com/Kotlin/kotlinx.coroutines/issues/148#issuecomment-338101986

Solução que utilizei:

val handler = CoroutineExceptionHandler { _, ex ->
  ex.printStackTrace() //TODO
}
launch(CommonPool + handler) {
   //your code here
}

Android – Configurando o Dagger com Worker (Dagger 2 setup with WorkManager)

dagger-dependency-injection

No exemplo a seguir mostro como configurar o Dagger 2 para trabalhar com o WorkManager.
Atualmente é uma tarefa bem complicada e que possivelmente sofrerá alterações em sua implementação pois o WorkManager é uma nova API do Android e o Dagger2 ainda não tem recursos para facilitar a implementação de injeção de dependências nela.

Este artigo está utilizando as seguintes versões:

dagger2: “com.google.dagger:dagger-android:2.20″
workmanager: “android.arch.work:work-runtime-ktx:1.0.0-beta04″

Veja a implementação: Continue reading

Kotlin – Dicas de como utilizar as Standard Funcions – ‘run’, ‘let’, ‘apply’ and ‘also’ (Kotlin Standard Functions cheat-sheet)

kotlin_android_kt

Todas essas funções funcionam de maneira semelhante, no sentido em que permitem alterar o escopo da função ou variável atual e, ao mesmo tempo, aplicar várias operações nessa mesma variável, tudo no mesmo lugar. Segue um flowchart bem interessante que encontrei em uma publicação no Medium/androiddevelopers para auxiliar na escolha: Continue reading

Android – Como detectar se a aplicação está minimizada ou não (How to detect Android application in background or foreground events)

android-basic-lifecycleSe você estiver usando a biblioteca de componentes de arquitetura do Android, poderá usar o ProcessLifecycleOwner para configurar um ouvinte para todo o processo do aplicativo para eventos onStart e onStop. Para fazer isso, faça com que sua classe de aplicativo implemente a interface LifecycleObserver e inclua algumas anotações de onStop e onStart em seus métodos de primeiro e segundo plano:

  Continue reading