Sebagian besar jawaban di sini tampaknya membahas praktik terbaik pengujian unit secara umum (kapan, di mana, mengapa, dan apa), daripada benar-benar menulis pengujian itu sendiri (bagaimana). Karena pertanyaannya tampak cukup spesifik pada bagian "bagaimana", saya pikir saya akan memposting ini, diambil dari presentasi "tas coklat" yang saya lakukan di perusahaan saya.
5 Hukum Tes Menulis Womp:
1. Gunakan nama metode pengujian yang panjang dan deskriptif.
- Map_DefaultConstructorShouldCreateEmptyGisMap()
- ShouldAlwaysDelegateXMLCorrectlyToTheCustomHandlers()
- Dog_Object_Should_Eat_Homework_Object_When_Hungry()
2. Tulis tes Anda dalam gaya Atur / Bertindak / Tegaskan .
- Sementara strategi organisasi ini telah ada untuk beberapa waktu dan disebut banyak hal, pengenalan akronim "AAA" baru-baru ini telah menjadi cara yang bagus untuk menyampaikannya. Membuat semua pengujian Anda konsisten dengan gaya AAA membuatnya mudah dibaca dan dipelihara.
3. Selalu berikan pesan kegagalan dengan Asserts Anda.
Assert.That(x == 2 && y == 2, "An incorrect number of begin/end element
processing events was raised by the XElementSerializer");
- Praktik sederhana namun bermanfaat yang menjelaskan dalam aplikasi pelari Anda apa yang gagal. Jika Anda tidak memberikan pesan, biasanya Anda akan mendapatkan sesuatu seperti "Diharapkan benar, salah" dalam keluaran kegagalan Anda, yang membuat Anda harus benar-benar membaca tes untuk mencari tahu apa yang salah.
4. Komentari alasan pengujian - apa asumsi bisnisnya?
/// A layer cannot be constructed with a null gisLayer, as every function
/// in the Layer class assumes that a valid gisLayer is present.
[Test]
public void ShouldNotAllowConstructionWithANullGisLayer()
{
}
- Ini mungkin tampak jelas, tetapi praktik ini akan melindungi integritas tes Anda dari orang-orang yang tidak memahami alasan di balik tes. Saya telah melihat banyak tes dihapus atau dimodifikasi yang baik-baik saja, hanya karena orang tersebut tidak memahami asumsi bahwa tes itu memverifikasi.
- Jika tesnya sepele atau nama metode cukup deskriptif, komentar tidak boleh dibiarkan.
5. Setiap pengujian harus selalu mengembalikan status sumber daya yang disentuhnya
- Gunakan tiruan jika memungkinkan untuk menghindari berurusan dengan sumber daya nyata.
- Pembersihan harus dilakukan di tingkat ujian. Tes tidak boleh bergantung pada urutan eksekusi.