Saya tahu ini adalah pertanyaan yang sangat lama, tetapi saya ingin menambahkan pengalaman saya di sana. Saya baru-baru ini mengubah kebiasaan pengujian unit dari proyek yang terpisah ke yang sama.
Mengapa?
Pertama saya sangat cenderung menjaga struktur folder proyek utama sama dengan proyek uji. Jadi, jika saya memiliki file di bawahProviders > DataProvider > SqlDataProvider.cs
maka saya membuat struktur yang sama di proyek pengujian unit saya sepertiProviders > DataProvider > SqlDataProvider.Tests.cs
Tetapi setelah proyek semakin besar dan lebih besar, setelah Anda memindahkan file dari satu folder ke folder lain, atau dari satu proyek ke yang lain, maka pekerjaan yang sangat rumit untuk menyinkronkannya dengan proyek-proyek unit test.
Kedua, tidak selalu sangat mudah dinavigasi dari kelas untuk diuji ke kelas uji unit. Ini bahkan lebih sulit untuk JavaScript dan Python.
Baru-baru ini, saya mulai berlatih bahwa, setiap file yang saya buat (misalnya SqlDataProvider.cs
) saya membuat file lain dengan akhiran Test, sepertiSqlDataProvider.Tests.cs
Pada awalnya tampaknya akan membengkak file dan referensi perpustakaan, tetapi dalam jangka panjang, Anda akan menghilangkan sindrom file bergerak pada pandangan pertama, dan Anda juga akan memastikan, setiap file yang sedang diuji akan memiliki file pasangan. dengan .Tests
akhiran. Ini memberi Anda mudah melompat ke file uji (karena berdampingan) daripada melihat melalui proyek terpisah.
Anda bahkan dapat menulis aturan bisnis untuk memindai melalui proyek dan mengidentifikasi kelas yang tidak memiliki file .Tests, dan melaporkannya kepada pemilik. Anda juga dapat memberi tahu pelari ujian Anda dengan mudah ke .Tests
kelas sasaran .
Khusus untuk Js dan Python Anda tidak perlu mengimpor referensi Anda dari jalur yang berbeda, Anda cukup menggunakan jalur file target yang sama sedang diuji.
Saya menggunakan praktik ini untuk sementara waktu, dan saya pikir itu adalah pertukaran yang sangat masuk akal antara ukuran proyek vs pemeliharaan dan kurva pembelajaran untuk pendatang baru ke proyek.