Thuta Learning
ရှာဖွေရန်
AdvancedMobile Developmentintermediate

Testing Android Apps

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Testing Android Apps ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Android Studio/Compose code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

Unit Test က function/class တစ်ခုချင်းစီ (ViewModel logic, data transformation) ကို UI/device မလိုအပ်ဘဲ test လုပ်ခြင်းပါ — JUnit framework ကို သုံးပါတယ်, fast run ပြီး CI pipeline ထဲမှာ frequent run လုပ်လို့ရပါတယ်။ UI Test (Compose Test) ကတော့ actual UI interaction (button click, text input) ကို emulator/device ပေါ်မှာ automate test လုပ်ခြင်းပါ — `composeTestRule` ကို သုံးပြီး 'button ကို click ရင် text ပြောင်းလဲမလား' ဆိုတာမျိုးကို verify လုပ်နိုင်ပါတယ်.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

`TodoViewModel.addTodo()` ရဲ့ logic ကို unit test ရေးရင် `@Test fun addTodo_increasesListSize() { viewModel.addTodo("Test"); assertEquals(1, viewModel.todos.size) }` လို့ ရေးနိုင်ပါတယ် — UI test ကတော့ `composeTestRule.onNodeWithText("Add").performClick(); composeTestRule.onNodeWithText("Test").assertIsDisplayed()` ဆိုပြီး, button click ပြီးရင် todo item screen ပေါ် ပေါ်လာမလား verify လုပ်နိုင်ပါတယ်.

အတူတူ ကြည့်မယ်

kotlin
// Unit test
class TodoViewModelTest {
    @Test
    fun addTodo_increasesListSize() {
        val viewModel = TodoViewModel(fakeDao)
        viewModel.addTodo("Buy milk")
        assertEquals(1, viewModel.todos.size)
    }
}

// Compose UI test
class TodoScreenTest {
    @get:Rule val composeTestRule = createComposeRule()

    @Test
    fun clickingAddButton_showsNewTodo() {
        composeTestRule.setContent { TodoScreen() }
        composeTestRule.onNodeWithText("Add").performClick()
        composeTestRule.onNodeWithText("Buy milk").assertIsDisplayed()
    }
}
You should see
$ ./gradlew test
BUILD SUCCESSFUL — 2 tests passed

၅ မိနစ် စမ်းကြည့်

`TodoViewModel` ရဲ့ `addTodo()` function အတွက် unit test တစ်ခု ကိုယ်တိုင် ရေးကြည့်ပြီး, Android Studio ရဲ့ 'Run Test' button နဲ့ run ကြည့်ပါ။

သတိလေးတစ်ချက်

Test coverage 100% ကို target မထားပါနှင့် — critical business logic (payment, data integrity) ကို priority ပေးပြီး test ရေးသင့်ပါတယ်, UI detail (color, spacing) အတွက် test ကတော့ ROI နည်းတတ်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Test ကို 'code ရေးပြီးရင် နောက်မှ ရေးမယ်' ဆိုပြီး ဆက်ရွှေ့ထားခြင်း — feature တိုးလာတာနဲ့အမျှ manual re-test လုပ်ရတာ ပိုကြာလာပါလိမ့်မယ်
  • UI test ကို real network/database ပေါ်မှာ တိုက်ရိုက် run ခြင်း — test flaky (တစ်ခါအောင်၊ တစ်ခါကျ) ဖြစ်တတ်ပါတယ်, fake/mock dependency ကို သုံးသင့်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

`TodoViewModel` ရဲ့ `addTodo()` function အတွက် unit test တစ်ခု ကိုယ်တိုင် ရေးကြည့်ပြီး, Android Studio ရဲ့ 'Run Test' button နဲ့ run ကြည့်ပါ။

You'll know it worked when: $ ./gradlew test BUILD SUCCESSFUL — 2 tests passed

Testing Android Apps | Thuta Learning