Middle
Milliseid testimismeetodeid kasutate Kotlin-koodi testimiseks?
sobes.tech AI
Vastus AI-lt
Ma kasutan järgmisi testimise meetodeid:
- Üksuse testimine: Eraldada ja kontrollida väikeseid komponente (funktsioone, klasse) isoleeritult. Kasutan JUnit 5 või Spek.
- Integreerimistest: Kontrollida mitme komponendi või süsteemi vahelist koostööd.
- Kasutajaliidese testimine: Testida kasutajaliidest reaalses seadmes või emulaatoris. Androidi puhul kasutan Espresso või UI Automator.
- Tööriistaline testimine: Testimine, mis nõuab seadmes või emulaatoris täitmist. Kaasab UI ja mõned integratsioonitestid.
- Lõpp-nii (End-to-End) testimine: Kogu rakenduse testimine algusest lõpuni, kasutaja tegevuste jäljendamine.
Testide kirjutamiseks kasutan Mockito või MockK sõltuvuste mokkimiseks ning Hamcrest või AssertJ väidete kirjutamiseks:
// Näide üksuse testist JUnit 5 ja MockK kasutades
import io.mockk.every
import io.mockk.mockk
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class MyServiceTest {
@Test
fun `calculateSum should return correct sum`() {
// Mokime sõltuvuse
val dependency: Dependency = mockk()
every { dependency.getValue() } returns 10
val service = MyService(dependency)
val result = service.calculateSum(20)
// Kontrollime tulemust
assertEquals(30, result)
}
}
class MyService(private val dependency: Dependency) {
fun calculateSum(a: Int): Int {
return a + dependency.getValue()
}
}
interface Dependency {
fun getValue(): Int
}
// Näide UI testist Androidis Espresso abil
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.rules.ActivityScenarioRule
import org.junit.Rule
import org.junit.Test
class MainActivityTest {
@get:Rule
var activityRule: ActivityScenarioRule<MainActivity> = ActivityScenarioRule(MainActivity::class.java)
@Test
fun clickingButtonChangesText() {
// Leia nuppu id järgi ja kliki
onView(withId(R.id.button)).perform(click())
// Kontrolli, kas TextView tekst on muutunud
onView(withId(R.id.textView)).check(matches(withText("Tekst muudetud!")))
}
}