Testes Unitários e Testes Instrumentados | Parte 1
Dois tipos de teste de unidade
- Teste JVM (teste de unidade local)
- Teste no dispositivo (teste de instrumentação)
- → Teste de UI (Interação com Views)
- → Teste sem interface do usuário (Conteúdo, Gerenciador de ativos, etc.
O teste de unidade é um método de testar unidades individuais de código isoladamente, é um método de teste de software em que as menores partes testáveis de um aplicativo, chamadas de unidades, são testadas individual e independentemente para operação adequada. Esse tipo de teste é usado para verificar se as unidades individuais de código, como métodos e funções, funcionam conforme o esperado. Os testes de unidade geralmente são automatizados e executados como parte do processo de compilação. Eles são rápidos, fáceis de escrever e podem ser executados com frequência, fornecendo feedback rápido sobre a qualidade do código.
No Android, a estrutura para teste de unidade é fornecida pelo JUnit, que é uma estrutura de teste amplamente usada para Java. O JUnit está incluído no Android SDK, portanto, pode ser facilmente adicionado a qualquer projeto Android.
Aqui está um exemplo de um teste de unidade simples no Android usando JUnit:
import org.junit.Test
import org.junit.Assert.*
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
Outro exemplo, você pode testar uma função que espera um parâmetro e retorna um valor:
class Calculator {
fun add(a: Int, b: Int): Int = a + b
}
class CalculatorTest {
private val calculator = Calculator()
@Test
fun add_isCorrect() {
assertEquals(4, calculator.add(2, 2))
}
}
Em resumo, o teste de unidade é um método de teste de software em que as menores partes testáveis de um aplicativo, chamadas de unidades, são testadas individual e independentemente para operação adequada. No Android, a estrutura para teste de unidade é fornecida pelo JUnit, que é uma estrutura de teste amplamente usada para Java. O JUnit está incluído no Android SDK, portanto, pode ser facilmente adicionado a qualquer projeto Android, é uma parte essencial de qualquer processo de desenvolvimento de aplicativo Android, ajuda a garantir que o código esteja funcionando corretamente e facilita a captura e corrigir bugs no início do processo de desenvolvimento.
Benefícios do Teste de Unidade:
- O teste de unidade aumenta a confiança na alteração/manutenção do código. Se bons testes de unidade forem escritos e executados toda vez que algum código for alterado, seremos capazes de detectar prontamente quaisquer defeitos introduzidos devido à alteração. Além disso, se os códigos já são menos interdependentes para possibilitar o teste de unidade, o impacto não intencional de alterações em qualquer código é menor.
- Os códigos são mais reutilizáveis. Para possibilitar o teste de unidade, os códigos precisam ser modulares. Isso significa que os códigos são mais fáceis de reutilizar.
- O desenvolvimento é mais rápido, reduzindo os defeitos que podem ser encontrados durante o teste do sistema ou teste de aceitação.
- A depuração é fácil. Quando um teste falha, apenas as alterações mais recentes precisam ser depuradas. Com testes em níveis mais altos, as alterações feitas ao longo de vários dias/semanas/meses precisam ser verificadas.
- Os códigos são mais confiáveis.
@Test
fun pallindrome{
//Arrange
//Act
//Assert
}
Como você pode ver, val sample = sample() é Arrange
e val result = sample.isPallindrome(“hello”) é Act
e assertEquals(false,result) este é o Assert
aqui false é o valor esperado e result é o valor que estamos obtendo através da função, depois disso, ele corresponderá a esses valores com base no resultado em que o caso de teste passará ou falhará
todas essas três coisas fazem a lógica de teste
Estarei testando em uma string onde estarei verificando se uma string é palíndromo ou não
package com.example.unittesting.utils
import org.junit.Assert.*
import org.junit.Test
class sampleTest {
@Test
fun isPallindrome() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("hello")
//Assert
assertEquals(false,result)
}
@Test
fun isPallindrome_level_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("level")
//Assert
assertEquals(true,result)
}
@Test
fun isPallindrome_civic_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("civic")
//Assert
assertEquals(true,result)
}
}
Como você pode ver, todos os casos de teste foram aprovados de acordo com o valor esperado
No próximo artigo, veremos o teste instrumentado para obter mais informações sobre o teste de unidade, consulte este documento
Sobre mim
Oi,
Sou Abhay Saini, trabalho como desenvolvedor Android na AppyHigh. Sou aluno do pré-final do Instituto Indiano de Tecnologia da Informação, Una . Um recém-chegado entusiasmado com habilidades de liderança e aprendizado rápido altamente motivado, cursando B.Tech em Tecnologia da Informação.
Se você tiver algum problema com o Android, basta me enviar um ping para [email protected] ou Linkedin
Tenha um bom dia!!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)