Middle
Kotlin кодун текшерүү үчүн кайсы тестирлөө ыкмаларын колдонуп жатасыз?
sobes.tech AI
AIден жооп
Мен тестирлөөнүн төмөнкү ыкмаларын колдонуп жатам:
- Бөлүк-тестирлөө: Ажыратылган кичинекей компоненттерди (функциялар, класстар) текшерүү. JUnit 5 же Spek колдонуп жатам.
- Интеграциялык тестирлөө: Бир нече компоненттер же системалардын өз ара аракеттенүүсүн текшерүү.
- UI тестирлөө: Колдонуучунун интерфейсин реалдуу түзмөктө же эмулятордо тестирлөө. Android үчүн Espresso же UI Automator колдонуп жатам.
- Инструменталдык тестирлөө: Тестирлөө, ал түзмөктө же эмулятордо аткарылышы керек. UI жана айрым интеграциялык тесттерди камтыйт.
- Аягына чейин (End-to-End) тестирлөө: Бардык колдонмону баштан аягына чейин тестирлөө, колдонуучунун аракеттерин имитациялоо.
Тесттерди жазууда Mockito же MockK зависимосторду моктоо үчүн, Hamcrest же AssertJ текшерүү үчүн колдонулат:
// JUnit 5 жана 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 should return correct sum`() {
// Зависимосту моктоо
val dependency: Dependency = mockk()
every { dependency.getValue() } returns 10
val service = MyService(dependency)
val result = service.calculateSum(20)
// Натыйжаны текшерүү
assertEquals(30, result)
}
}
class MyService(private val dependency: Dependency) {
fun calculateSum(a: Int): Int {
return a + dependency.getValue()
}
}
interface Dependency {
fun getValue(): Int
}
// Android үчүн UI тесттин мисалы 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 clickingButtonChangesText() {
// Түймені id-і боюнча табып, басуу
onView(withId(R.id.button)).perform(click())
// TextView текстинин өзгөргөнүн текшерүү
onView(withId(R.id.textView)).check(matches(withText("Текст өзгөрдү!")))
}
}