ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Unit Test က function/class တစ်ခုချင်းစီ (ViewModel logic, data transformation) ကို UI/device မလိုအပ်ဘဲ test လုပ်ခြင်းပါ — XCTest framework (Xcode built-in) ကို သုံးပါတယ်, fast run ပြီး CI pipeline ထဲမှာ frequent run လုပ်လို့ရပါတယ်။ UI Test (XCUITest) ကတော့ actual UI interaction (button tap, text input) ကို Simulator ပေါ်မှာ automate test လုပ်ခြင်းပါ — `XCUIApplication` ကို သုံးပြီး 'button ကို tap ရင် text ပြောင်းလဲမလား' ဆိုတာမျိုးကို verify လုပ်နိုင်ပါတယ်.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
`TodoViewModel.addTodo()` ရဲ့ logic ကို unit test ရေးရင် `func testAddTodo_increasesListSize() { viewModel.addTodo(title: "Test"); XCTAssertEqual(viewModel.todos.count, 1) }` လို့ ရေးနိုင်ပါတယ် — UI test ကတော့ `app.buttons["Add"].tap(); XCTAssertTrue(app.staticTexts["Test"].exists)` ဆိုပြီး, button tap ပြီးရင် todo item screen ပေါ် ပေါ်လာမလား verify လုပ်နိုင်ပါတယ်.
အတူတူ ကြည့်မယ်
// Unit test
import XCTest
@testable import MyApp
final class TodoViewModelTests: XCTestCase {
func testAddTodo_increasesListSize() {
let viewModel = TodoViewModel()
viewModel.addTodo(title: "Buy milk")
XCTAssertEqual(viewModel.todos.count, 1)
}
}
// UI test
final class TodoAppUITests: XCTestCase {
func testTappingAddButton_showsNewTodo() {
let app = XCUIApplication()
app.launch()
app.buttons["Add"].tap()
XCTAssertTrue(app.staticTexts["Buy milk"].exists)
}
}$ xcodebuild test
Test Suite 'All tests' passed — 2 tests, 0 failures၅ မိနစ် စမ်းကြည့်
`TodoViewModel` ရဲ့ `addTodo()` function အတွက် unit test တစ်ခု ကိုယ်တိုင် ရေးကြည့်ပြီး, Xcode ရဲ့ 'Run Test' (◇ icon) button နဲ့ run ကြည့်ပါ။
သတိလေးတစ်ချက်
Test coverage 100% ကို target မထားပါနှင့် — critical business logic (payment, data integrity) ကို priority ပေးပြီး test ရေးသင့်ပါတယ်, UI detail (color, spacing) အတွက် test ကတော့ ROI နည်းတတ်ပါတယ်။