Menguji aplikasi EF Core

Pengujian menjadi perhatian penting bagi hampir semua jenis aplikasi - ini memungkinkan Anda untuk memastikan aplikasi berfungsi dengan benar, dan membuatnya langsung diketahui jika perilakunya mundur di masa depan. Karena pengujian dapat memengaruhi bagaimana kode Anda dirancang, sangat disarankan untuk merencanakan pengujian lebih awal dan untuk memastikan cakupan yang baik saat aplikasi Anda berkembang. Bagian pengantar ini memberikan gambaran singkat tentang berbagai strategi pengujian untuk aplikasi menggunakan EF Core.

Melibatkan database (atau tidak)

Saat menulis pengujian untuk aplikasi EF Core Anda, salah satu keputusan dasar yang perlu dibuat adalah apakah pengujian akan melibatkan sistem database produksi Anda - seperti yang dilakukan aplikasi Anda - atau apakah pengujian akan berjalan terhadap uji ganda, yang menggantikan sistem database produksi Anda. Dua contoh uji ganda yang menonjol dalam konteks EF Core adalah mode dalam memori SQLite, dan penyedia dalam memori.

Untuk perbandingan mendalam dan analisis berbagai pendekatan, lihat Memilih strategi pengujian. Di bawah ini adalah ringkasan singkat poin demi poin untuk membantu Anda meningkatkan kecepatan dengan berbagai opsi:

  • Pengembang sering menghindari pengujian terhadap sistem database produksi mereka karena mereka meyakini pengujian tersebut akan sulit atau lambat. Hal ini tidak selalu benar menurut pengalaman kami, dan sebaiknya berikan pendekatan ini kesempatan: Pengujian terhadap sistem database produksi memberikan teknik untuk melakukan pengujian dengan andal dan efisien. Menulis setidaknya beberapa pengujian terhadap database Anda biasanya diperlukan dalam hal apa pun - untuk memastikan aplikasi Anda benar-benar berfungsi terhadap database produksi Anda - dan pengujian yang tidak melibatkan database dapat dibatasi pada aspek yang diizinkan untuk Anda uji (lihat di bawah).
  • Penyedia dalam memori tidak akan berlaku seperti database nyata Anda dengan banyak hal penting. Beberapa fitur tidak dapat diuji dengannya sama sekali (mis. transaksi, SQL mentah..), sementara fitur lain mungkin berperilaku berbeda dari database produksi Anda (mis. sensitivitas huruf besar/kecil dalam kueri). Meskipun dalam memori dapat berfungsi untuk skenario kueri sederhana dan dibatasi, ini sangat terbatas dan kami mencegah penggunaannya.
    • Meniru DbSet untuk kueri rumit dan sulit, dan menderita kerugian yang sama dengan pendekatan dalam memori; kami juga mencegah hal ini.
  • Mode dalam memori SQLite menawarkan kompatibilitas yang lebih baik dengan database hubungan produksi, karena SQLite sendiri adalah database hubungan lengkap. Namun, masih akan ada beberapa perbedaan penting antara SQLite dan database produksi Anda, dan beberapa fitur tidak dapat diuji sama sekali (mis. metode khusus penyedia di EF.Functions).
  • Untuk pendekatan pengujian yang memungkinkan penggunaan uji ganda yang andal untuk semua fungsionalitas sistem database produksi, Anda dapat memasukkan lapisan repositori di aplikasi Anda. Ini memungkinkan Anda untuk mengecualikan EF Core sepenuhnya dari pengujian dan sepenuhnya mengejek repositori; tetapi, ini mengubah arsitektur aplikasi Anda dengan cara yang mungkin signifikan, dan melibatkan lebih banyak biaya implementasi serta pemeliharaan.

Bacaan lebih lanjut

Untuk informasi selengkapnya, lihat Memilih strategi pengujian. Untuk panduan implementasi dan sampel kode, lihat Pengujian terhadap sistem database produksi dan Pengujian tanpa sistem database produksi.