Bagikan melalui


Menguji Aplikasi Inti EF

Mengujikan adalah aspek penting bagi hampir semua jenis aplikasi - ini memungkinkan Anda untuk memastikan aplikasi Anda berfungsi dengan benar, dan segera diketahui jika perilakunya mengalami regresi 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, satu keputusan dasar yang perlu Anda buat adalah apakah pengujian Anda akan melibatkan sistem database produksi Anda - seperti yang dilakukan aplikasi Anda - atau apakah pengujian Anda akan berjalan terhadap pengujian ganda, yang menggantikan sistem database produksi Anda. Dua contoh ganda pengujian 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 titik demi titik singkat untuk membantu Anda mempercepat berbagai opsi:

  • Pengembang sering menghindari pengujian terhadap sistem database produksi mereka karena mereka percaya ini sulit atau lambat. Ini tidak selalu benar dalam pengalaman kami, dan kami sarankan memberikan pendekatan ini kesempatan: Pengujian terhadap sistem database produksi Anda menyediakan teknik untuk melakukan ini 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 dalam apa yang memungkinkan Anda untuk menguji (lihat di bawah).
  • Penyedia in-memory tidak akan berfungsi seperti database nyata Anda dalam banyak cara penting. Beberapa fitur tidak dapat diuji dengannya sama sekali (misalnya transaksi, SQL mentah..), sementara fitur lain mungkin berperilaku berbeda dari database produksi Anda (misalnya sensitivitas huruf besar/kecil dalam kueri). Meskipun in-memory dapat bekerja untuk skenario kueri yang sederhana dan dibatasi, itu sangat terbatas dan kami tidak menyarankan penggunaannya.
    • Memperolok DbSet untuk kueri adalah hal yang kompleks dan menantang, serta memiliki kerugian yang sama dengan pendekatan dalam memori (in-memory); kami juga tidak menganjurkan hal ini.
  • Mode dalam memori SQLite menawarkan kompatibilitas yang lebih baik dengan database relasional produksi, karena SQLite adalah database relasional lengkap. Namun, masih akan ada beberapa perbedaan penting antara SQLite dan database produksi Anda, dan beberapa fitur tidak dapat diuji sama sekali (misalnya metode khusus penyedia pada EF. Fungsi).
  • Untuk pendekatan pengujian yang memungkinkan Anda menggunakan pengujian ganda yang andal untuk semua fungsionalitas sistem database produksi Anda, dimungkinkan untuk memperkenalkan lapisan repositori dalam aplikasi Anda. Ini memungkinkan Anda untuk mengecualikan EF Core sepenuhnya dari pengujian dan untuk sepenuhnya meniru repositori; namun, ini mengubah arsitektur aplikasi Anda dengan cara yang bisa signifikan, dan melibatkan lebih banyak biaya implementasi dan pemeliharaan.

Bacaan lebih lanjut

Untuk informasi lebih mendalam, lihat Memilih strategi pengujian. Untuk panduan implementasi dan contoh kode, lihat Pengujian terhadap sistem basis data produksi dan Pengujian tanpa sistem basis data produksi Anda.