Middle
Ce metode de testare folosești pentru a testa codul în Kotlin?
sobes.tech AI
Răspuns de la AI
Aplic următoarele metode de testare:
- Testare unitate: Verificarea componentelor mici (funcții, clase) în izolare. Folosesc JUnit 5 sau Spek.
- Testare de integrare: Verificarea interacțiunii între mai multe componente sau subsisteme.
- Testare UI: Testarea interfeței utilizatorului pe un dispozitiv real sau emulator. Pentru Android, folosesc Espresso sau UI Automator.
- Testare instrumentală: Test care necesită rulare pe un dispozitiv sau emulator. Include teste UI și unele tipuri de teste de integrare.
- Testare End-to-End: Testarea întregii aplicații de la început până la sfârșit, simulând acțiunile utilizatorului.
Pentru scrierea testelor, folosesc Mockito sau MockK pentru mockarea dependențelor și Hamcrest sau AssertJ pentru scrierea expresiilor de afirmație.
// Exemplu de test unitar cu JUnit 5 și MockK
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 ar trebui să returneze suma corectă`() {
// Mock dependența
val dependency: Dependency = mockk()
every { dependency.getValue() } returns 10
val service = MyService(dependency)
val result = service.calculateSum(20)
// Verificăm rezultatul
assertEquals(30, result)
}
}
class MyService(private val dependency: Dependency) {
fun calculateSum(a: Int): Int {
return a + dependency.getValue()
}
}
interface Dependency {
fun getValue(): Int
}
// Exemplu de test UI pentru Android cu Espresso
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 clicareaButonuluiSchimbăTextul() {
// Găsește butonul după id și apasă pe el
onView(withId(R.id.button)).perform(click())
// Verifică dacă textul din TextView s-a schimbat
onView(withId(R.id.textView)).check(matches(withText("Text schimbat!")))
}
}