Umum
- Ikuti standar yang sama untuk semua tes.
- Perjelas tentang apa masing-masing negara tes.
- Lebih spesifik tentang perilaku yang diharapkan.
Contohnya
1) MethodName_StateUnderTest_ExpectedBehavior
Public void Sum_NegativeNumberAs1stParam_ExceptionThrown()
Public void Sum_NegativeNumberAs2ndParam_ExceptionThrown ()
Public void Sum_simpleValues_Calculated ()
Sumber: Penamaan standar untuk Tes Unit
2) Memisahkan Setiap Kata Dengan Garis Bawah
Public void Sum_Negative_Number_As_1st_Param_Exception_Thrown()
Public void Sum_Negative_Number_As_2nd_Param_Exception_Thrown ()
Public void Sum_Simple_Values_Calculated ()
Lain
- Akhiri nama metode dengan Test
- Mulai nama metode dengan nama kelas
unit-testing
naming-conventions
tersengat
sumber
sumber
Jawaban:
Saya cukup banyak dengan Anda pada pria yang satu ini. Konvensi penamaan yang Anda gunakan adalah:
Apa lagi yang Anda butuhkan dari nama tes?
Bertolak belakang dengan jawaban Ray, saya pikir Tes awalan tidak diperlukan. Itu kode uji, kita tahu itu. Jika Anda perlu melakukan ini untuk mengidentifikasi kode, maka Anda memiliki masalah yang lebih besar, kode pengujian Anda tidak boleh bercampur dengan kode produksi Anda.
Adapun panjang dan penggunaan garis bawah, kode tesnya , siapa yang peduli? Hanya Anda dan tim Anda yang akan melihatnya, asalkan itu dapat dibaca, dan jelas tentang apa yang dilakukan tes, lakukan! :)
Yang mengatakan, saya masih cukup baru untuk menguji dan membuat blog petualangan saya dengan itu :)
sumber
Test
dan nama kelas Anda. Jika nama kelas dan nama kelas uji sama, kita akan selalu harus berhenti dan membaca jalur dua fileSearch Everywhere
(shift shift) atauFind a Class By Name
(CMD O). Saya mendapatkan bahwa itu akan dibedakan oleh struktur folder atau struktur modul, tetapi ketika kita mencari sesuatu, kita sudah tahu apa yang ingin kita cari. Misalnya, jika saya mencari tes, saya ingin membatasi pencarian sayatest
dan kemudian mencari nama, daripada mencari nama dan kemudian menyaring tes secara manual dengan mata. Ini perbedaan kecil, tetapi jauh lebih mudah untuk "menguji [nama kelas]" dan hanya memiliki satu pop up dan mengurangi beban mentalIni juga layak dibaca: Tes Unit Penataan
misalnya
Dan inilah alasannya:
Saya juga suka pendekatan ini:
MethodName_StateUnderTest_ExpectedBehavior
Jadi mungkin sesuaikan dengan:
StateUnderTest_ExpectedBehavior
Karena setiap tes akan berada di kelas bersarang
sumber
Saya cenderung menggunakan konvensi
MethodName_DoesWhat_WhenTheseConditions
jadi misalnya:Namun, apa yang saya lihat banyak adalah untuk membuat nama tes mengikuti struktur unit pengujian
Yang juga mengikuti sintaks BDD / Gherkin dari:
yang akan menamai tes dengan cara:
UnderTheseTestConditions_WhenIDoThis_ThenIGetThis
jadi untuk contoh Anda:
Namun saya lebih suka menempatkan nama metode yang diuji terlebih dahulu, karena dengan demikian pengujian dapat disusun berdasarkan abjad, atau muncul menurut abjad di dalam kotak dropdown anggota di VisStudio, dan semua tes untuk 1 metode dikelompokkan bersama.
Dalam hal apapun, saya seperti memisahkan utama bagian dari nama tes dengan garis bawah, sebagai lawan setiap kata , karena saya pikir itu membuat lebih mudah untuk membaca dan mendapatkan titik uji di.
Dengan kata lain, saya suka:
Sum_ThrowsException_WhenNegativeNumberAs1stParam
lebih baik daripadaSum_Throws_Exception_When_Negative_Number_As_1st_Param
.sumber
Saya memberi nama metode pengujian saya seperti metode lain menggunakan "PascalCasing" tanpa garis bawah atau pemisah. Saya meninggalkan Tes postfix untuk metode ini, karena tidak menambah nilai. Bahwa metode tersebut adalah metode uji ditunjukkan oleh atribut TestMethod .
Karena fakta bahwa setiap kelas Uji hanya boleh menguji satu kelas lain saya meninggalkan nama kelas dari nama metode. Nama kelas yang berisi metode tes diberi nama seperti kelas yang diuji dengan postfix "Tes".
Untuk metode yang menguji pengecualian atau tindakan yang tidak mungkin, saya awali metode pengujian dengan kata Tidak Dapat .
Konversi penamaan saya didasarkan pada artikel "Kiat TDD: Konvensi & Pedoman Penamaan Tes" dari Bryan Cook. Saya menemukan artikel ini sangat membantu.
sumber
Rangkaian nama pertama lebih mudah dibaca oleh saya, karena CamelCasing memisahkan kata-kata dan bagian bawah underbars dari skema penamaan.
Saya juga cenderung menyertakan "Tes" di suatu tempat, baik dalam nama fungsi atau namespace atau kelas terlampir.
sumber
Selama Anda mengikuti satu latihan, itu tidak terlalu penting. Secara umum, saya menulis tes unit tunggal untuk metode yang mencakup semua variasi untuk suatu metode (saya punya metode sederhana;) dan kemudian menulis set tes yang lebih kompleks untuk metode yang memerlukannya. Struktur penamaan saya biasanya diuji (peninggalan dari JUnit 3).
sumber
Saya menggunakan awalan 'T' untuk ruang nama tes, kelas dan metode.
Saya mencoba untuk menjadi rapi dan membuat folder yang mereplikasi ruang nama, kemudian membuat folder tes atau proyek terpisah untuk tes dan mereplikasi struktur produksi untuk tes dasar:
Saya dapat dengan mudah melihat bahwa ada sesuatu yang merupakan tes, saya tahu persis apa kode asli yang berkaitan, (jika Anda tidak dapat menyelesaikannya, maka tesnya terlalu berbelit-belit).
Sepertinya konvensi penamaan antarmuka, (maksud saya, Anda tidak bingung dengan hal-hal yang dimulai dengan 'I', Anda juga tidak akan dengan 'T').
Mudah dikompilasi dengan atau tanpa tes.
Itu baik secara teori, dan bekerja cukup baik untuk proyek-proyek kecil.
sumber