Middle
Кадом усулҳои санҷишро барои санҷиши коди Kotlin истифода мебаред?
sobes.tech AI
Ҷавоб аз AI
Манай тестийн аргуудыг ашиглаж байна:
- Unit тест: Тухайн жижиг бүрэлдэхүүн хэсгүүдийг (функц, анги) тусгаарлан шалгах. 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 Espresso ашигласан UI тестийн жишээ
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("Текст өөрчлөгдсөн!")))
}
}