Saya baru-baru ini datang dengan konvensi berikut untuk penamaan tes saya, kelas mereka dan berisi proyek untuk memaksimalkan deskripsi mereka:
Katakanlah saya sedang menguji Settings
kelas dalam sebuah proyek di MyApp.Serialization
namespace.
Pertama saya akan membuat proyek uji dengan MyApp.Serialization.Tests
namespace.
Dalam proyek ini dan tentu saja namespace saya akan membuat kelas yang disebut IfSettings
(disimpan sebagai IfSettings.cs ).
Katakanlah saya sedang menguji SaveStrings()
metode. -> Saya akan memberi nama tes CanSaveStrings()
.
Saat saya menjalankan tes ini, ia akan menampilkan tajuk berikut:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Saya pikir ini memberitahu saya dengan sangat baik, apa itu pengujian.
Tentu saja bermanfaat bahwa dalam bahasa Inggris kata benda "Tes" sama dengan kata kerja "tes".
Tidak ada batasan untuk kreativitas Anda dalam memberi nama tes, sehingga kami mendapatkan judul kalimat penuh untuk mereka.
Biasanya nama Test harus diawali dengan kata kerja.
Contohnya termasuk:
- Mendeteksi (mis.
DetectsInvalidUserInput
)
- Melempar (misalnya
ThrowsOnNotFound
)
- Will (eg
WillCloseTheDatabaseAfterTheTransaction
)
dll.
Pilihan lain adalah menggunakan "itu" daripada "jika".
Yang terakhir menyelamatkan saya penekanan tombol dan menjelaskan lebih tepatnya apa yang saya lakukan, karena saya tidak tahu, bahwa perilaku yang diuji ada, tetapi saya menguji apakah itu.
[ Sunting ]
Setelah menggunakan konvensi penamaan di atas untuk sedikit lebih lama sekarang, saya telah menemukan, bahwa awalan If dapat membingungkan, ketika bekerja dengan antarmuka. Kebetulan, bahwa kelas pengujian IfSerializer.cs terlihat sangat mirip dengan antarmuka ISerializer.cs di "Buka File Tab". Ini bisa sangat menjengkelkan ketika beralih bolak-balik antara tes, kelas yang diuji dan antarmuka-nya. Alhasil saya sekarang akan memilih That over If sebagai awalan.
Selain itu saya sekarang menggunakan - hanya untuk metode di kelas pengujian saya karena tidak dianggap praktik terbaik di tempat lain - "_" untuk memisahkan kata dalam nama metode pengujian saya seperti pada:
[Test] public void detects_invalid_User_Input()
Saya menemukan ini lebih mudah dibaca.
[ Akhir Edit ]
Saya harap ini memunculkan beberapa ide lagi, karena saya menganggap penamaan tes sangat penting karena dapat menghemat banyak waktu yang seharusnya dihabiskan untuk mencoba memahami apa yang dilakukan tes (misalnya setelah melanjutkan proyek setelah jeda panjang) .