Jakich technologii użyć do unit testów na Anroidzie?
Jakich technologii użyć do stworzenia dobrych testów w projekcie androidowym? Jest sporo ciekawych frameworków, lecz warto skupić się na tych, które mają pełne wsparcie Kotlina – standardowego języka programowania używanego na Androidzie.

We wpisie znajdziesz kilka bibliotek, po które sięgam najczęściej.
Do tworzenia struktury testów... jUnit5!
class SomeTest{
@Test
@DisplayName("it should pass")
fun it_should_pass(){
//
}
}
Następca jUnit4 - jednego z najczęściej używanych frameworków do testowania na JVM.
Jak to dodać do projektu?
Do build.gradle dodaj...
android{
testOptions {
unitTests.all {
useJUnitPlatform()
}
}
}
dependencies {
testImplementation "org.junit.jupiter:junit-jupiter:5.8.0"
}
I później w klasie testowej upewnij się, że importujesz odpowiedni package, czyli: org.junit.jupiter.api.Test
jak zagnieżdżać testy w jUnit5 dowiesz się tutaj
Alternatywa do jUnit, czyli Kotest!
class SomeTest: StringSpec({
"it should pass"{
//
}
})
Kotestowy DSL, czyli domain specific language pozwala nadefiniowanie test case'ów wstylu specyfikacji.
Jak to dodać do projektu? Podobnie jak w integracji jUnit5, musimy okreslić, że chcemy używać JUnitPlatform:
android{
testOptions {
unitTests.all {
useJUnitPlatform()
}
}
}
dependencies {
testImplementation 'io.kotest:kotest-runner-junit5:5.0.0'
}
a o tym jak z Kotestem radzić sobie przy parametrycznych testach dowiesz się tutaj
Do mockowania... MockK!
val dependency: Controller = mockk{
every { messageReceived(any()) } returns emptyMap()
}
Biblioteka do mockowania dedykowana Kotlinowi. Ma wbudowany support do Kotlin Coroutines.
Jak to dodać do projektu? W build.gradle:
dependencies {
testImplementation 'io.mockk:mockk:1.12.1'
}
więcej o MockK przeczytasz tutaj
Do asercji... Strikt!
Ciekawa biblioteka – dostarcza od groma metod do budowania złożonych asercji, a jednocześnie renderuje czytelne raporty błędów.
val text = "Android Unit Testy"
expectThat(text)
.hasLength(18)
.matches(Regex("[\\w\\s]+"))
.startsWith("A")
Jak dodać Strikt do projektu?
W build.gradle:
dependencies {
testImplementation "io.strikt:strikt-core:0.33.0"
}
więcej o bibliotece Strikt dowiesz się pod tym linkiem
Same frameworki to nie wszystko. Trzeba też wiedzieć jak je skutecznie wykorzystywać.
Możesz się tego nauczyć. Weź udział w kursie unit testów i ogarnij najlepsze praktyki testowaniu na Androidzie.Pobierz bezpłatny fragment programu Android Unit Testy.
Na tego maila dostaniesz informację o otwarciu drugiej edycji kursu. Wyślę Ci również fragment kursu - lekcję o praktycznym zastosowaniu Mockito-Kotlin.