Skip to content

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CalcApp

App Android de calculadora desenvolvido como resolução do desafio de TDD da DIO. A lógica foi construída com testes antes da implementação e a interface coberta com Espresso.

O app soma, subtrai, multiplica e divide, mantém um histórico das operações e trata divisão por zero.

Nota: o curso usa um app de tarefas como exemplo; optei por uma calculadora por ter lógica de domínio mais rica, o que permite cobrir também testes unitários puros em Kotlin além dos testes de UI com Espresso.


Stack

  • Kotlin
  • JUnit para testes unitários (rodam na JVM)
  • Espresso para testes de UI (rodam no emulador)
  • Robot Pattern para organizar as interações de tela

Estrutura

app/src/
├── main/
│   ├── Calculadora.kt        # lógica de cálculo, sem dependência de Android
│   └── MainActivity.kt       # tela que liga os botões à Calculadora
├── test/
│   └── CalculadoraTest.kt    # testes unitários da lógica
└── androidTest/
    ├── CalculadoraRobot.kt   # interações de UI encapsuladas
    └── MainActivityTest.kt   # testes Espresso

A lógica está isolada da interface: a classe Calculadora não conhece Android, o que permite testar tudo na JVM sem precisar de emulador.


Como rodar

Testes unitários:

./gradlew test

Testes de UI (com emulador aberto):

./gradlew connectedDebugAndroidTest

Instalar o app no emulador ou device conectado:

./gradlew installDebug

O que é testado

Testes unitários (JVM):

  • Soma, subtração, multiplicação e divisão
  • Exceção em divisão por zero
  • Registro de operações no histórico

Testes de UI (Espresso):

  • Digitar dois números, clicar numa operação e conferir o resultado no display
  • Histórico atualizado após a operação
  • Mensagem de erro ao dividir por zero

Robot Pattern

Os testes de UI usam uma classe CalculadoraRobot que encapsula as interações com a tela:

robot
    .digitaA("2")
    .digitaB("3")
    .clicaSomar()
    .verificaResultado("5.0")

Com isso, os testes ficam legíveis e resistem a mudanças de layout. Se um id de view mudar, basta ajustar o Robot.


Sobre o processo

Cada método da Calculadora foi escrito a partir de um teste que falhava. O histórico de commits mostra essa sequência: para cada operação existem dois commits, um do teste (vermelho) e outro da implementação (verde).

About

App Android em Kotlin com testes unitários (JUnit) e de UI (Espresso) usando Robot Pattern

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages