Menulis Pengujian Karakterisasi Sebelum Refactoring
Anda tidak dapat melakukan refactoring dengan aman pada kode lama yang belum diuji. Pelajaran ini mengajarkan pengujian karakterisasi: merekam perilaku Objective-C lama saat ini agar refactoring mempertahankannya.
Menulis Pengujian Karakterisasi Sebelum Refactoring adalah pelajaran Objective-C iOS Development for Legacy & Enterprise Apps gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Objective-C iOS Development for Legacy & Enterprise Apps, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Objective-C iOS Development for Legacy & Enterprise Apps mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Refactoring Dilemma
Refactoring should not change behavior, but legacy code often has no tests proving what its behavior even is. Characterization tests solve this.
What Is a Characterization Test
A characterization test documents the code as it actually behaves, not as it should behave. It pins current output so any change becomes visible.
Find a Seam
A seam is a place you can call into the code without running the whole app. Public methods on a class are the easiest seams.
@interface PriceCalculator : NSObject
- (NSDecimalNumber *)totalForItems:(NSArray *)items
withTax:(double)taxRate;
@endCapture Current Output
Call the method with known inputs and record whatever it returns today, even if it looks wrong.
// Run once, observe, then assert the observed value
NSDecimalNumber *result = [calc totalForItems:items withTax:0.1];
NSLog(@"observed: %@", result); // -> 22.00Pin It With an Assertion
Turn the observed value into an assertion. This test now fails if behavior changes.
- (void)testTotalCharacterization {
NSDecimalNumber *r = [calc totalForItems:items withTax:0.1];
XCTAssertEqualObjects(r, [NSDecimalNumber decimalNumberWithString:@"22.00"]);
}Cover the Edge Cases
Add tests for empty input, zero tax, and large values. The goal is to surround the code so the refactor has a safety net.
Breaking Dependencies
If a method touches the network or disk, introduce a protocol seam and inject a fake so the test is fast and deterministic.
@protocol PriceFeed <NSObject>
- (double)currentRate;
@end
// Inject a fake PriceFeed in the testRefactor Under Green
With tests green, refactor in small steps, re-running tests after each change. Any red means you changed behavior and must reconsider.
Distinguish Bug From Behavior
A characterization test may pin a bug. That is fine: first preserve it, then fix it as a separate, deliberate change with its own test.
Delete When Replaced
Once proper unit tests describe the desired behavior, you can retire characterization tests that merely pinned legacy quirks.
Build the Net Incrementally
You do not need full coverage at once. Add characterization tests only around the code you are about to touch; the net grows as you refactor.
Quick Check
Test your characterization testing knowledge.
Recap
You learned to find seams, capture and pin current behavior, break dependencies with protocols, refactor under green, and grow a test net incrementally around legacy Objective-C.
Belajar Objective-C dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menulis Pengujian Karakterisasi Sebelum Refactoring” gratis?
Ya — teks lengkap “Menulis Pengujian Karakterisasi Sebelum Refactoring” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Objective-C iOS Development for Legacy & Enterprise Apps, upgrade ke CoddyKit PRO. Kursus Objective-C iOS Development for Legacy & Enterprise Apps mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menulis Pengujian Karakterisasi Sebelum Refactoring”?
Anda tidak dapat melakukan refactoring dengan aman pada kode lama yang belum diuji. Pelajaran ini mengajarkan pengujian karakterisasi: merekam perilaku Objective-C lama saat ini agar refactoring memp… Kamu berlatih Objective-C iOS Development for Legacy & Enterprise Apps dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Objective-C iOS Development for Legacy & Enterprise Apps?
Tidak diperlukan pengalaman sebelumnya. Objective-C iOS Development for Legacy & Enterprise Apps di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menulis Pengujian Karakterisasi Sebelum Refactoring” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Objective-C iOS Development for Legacy & Enterprise Apps ini?
Ya. Setiap pelajaran Objective-C iOS Development for Legacy & Enterprise Apps menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Refaktor Objective-C Lama
- Mengelola Utang Teknis
- Strategi Pemeliharaan Jangka Panjang
- Menulis Pengujian Karakterisasi Sebelum Refactoring