Bagikan melalui


Skrip dalam pengujian unit SQL Server

Setiap pengujian unit SQL Server berisi satu tindakan pra-pengujian, tindakan pengujian, dan tindakan pasca-pengujian. Masing-masing tindakan ini pada gilirannya berisi:

  • Skrip Transact-SQL yang dijalankan pada database.
  • Nol atau lebih kondisi pengujian yang mengevaluasi hasil yang dikembalikan dari eksekusi skrip.

Skrip pengujian Transact-SQL dalam tindakan pengujian adalah satu-satunya komponen yang harus Anda sertakan dalam setiap pengujian unit SQL Server. Selain skrip pengujian itu sendiri, Anda mungkin juga ingin menentukan kondisi pengujian untuk memverifikasi apakah skrip pengujian mengembalikan nilai atau set nilai yang Anda harapkan. Tindakan pengujian menjalankan atau mengubah objek tertentu dalam database tersebut lalu mengevaluasi perubahan tersebut.

Untuk setiap tindakan pengujian, Anda dapat menyertakan satu tindakan pra-pengujian dan satu tindakan pasca-pengujian. Mirip dengan tindakan pengujian, setiap tindakan pra-pengujian dan setiap tindakan pasca-pengujian berisi satu skrip Transact-SQL dan nol atau lebih kondisi pengujian. Anda dapat menggunakan tindakan pra-pengujian untuk memastikan bahwa database dalam keadaan yang memungkinkan tindakan pengujian Anda berjalan dan mengembalikan hasil yang bermakna. Misalnya, Anda dapat menggunakan tindakan pra-pengujian untuk memverifikasi bahwa tabel berisi data sebelum skrip pengujian melakukan operasi pada data tersebut.

Setelah tindakan pra-pengujian menyiapkan database dan tindakan pengujian mengembalikan hasil yang bermakna, tindakan pasca-pengujian dapat digunakan untuk mengembalikan database ke status bahwa database berada di sebelum tindakan pra-pengujian berjalan. Atau, dalam beberapa kasus, Anda mungkin menggunakan tindakan pasca-pengujian untuk memvalidasi hasil tindakan pengujian. Ini karena tindakan pasca-pengujian dapat memiliki hak istimewa database yang lebih besar daripada tindakan pengujian. Untuk informasi selengkapnya, lihat Gambaran umum string dan izin koneksi.

Selain ketiga tindakan ini, ada juga dua skrip pengujian (disebut sebagai skrip umum), yang berjalan sebelum dan sesudah setiap pengujian unit SQL Server berjalan. Akibatnya, hingga lima skrip Transact-SQL dapat dijalankan selama eksekusi satu pengujian unit SQL Server. Hanya skrip Transact-SQL yang terkandung dalam tindakan pengujian yang diperlukan; skrip umum dan skrip tindakan pra-pengujian dan pasca-pengujian bersifat opsional.

Tabel berikut ini menyediakan daftar lengkap skrip yang terkait dengan pengujian unit SQL Server apa pun.

Tindakan Jenis skrip Description
TestInitialize Skrip umum (inisialisasi) (Opsional) Skrip ini mendahului semua tindakan pra-pengujian dan pengujian dalam pengujian unit. Skrip TestInitialize berjalan sebelum setiap pengujian unit di kelas pengujian tertentu. Skrip ini dijalankan menggunakan konteks istimewa.
Pra-pengujian Uji skrip (Opsional) Skrip ini adalah bagian dari pengujian unit. Skrip pra-pengujian berjalan sebelum tindakan pengujian dalam pengujian unit. Skrip ini dijalankan menggunakan konteks istimewa.
Test Uji skrip (Diperlukan) Skrip ini adalah bagian dari pengujian unit. Skrip ini mungkin, misalnya, menjalankan prosedur tersimpan yang mendapatkan, menyisipkan, atau memperbarui nilai tabel. Skrip ini dijalankan menggunakan konteks eksekusi.
Pasca-pengujian Uji skrip (Opsional) Skrip ini adalah bagian dari pengujian unit. Skrip pasca-pengujian berjalan setelah pengujian unit individual. Skrip ini dijalankan menggunakan konteks istimewa.
TestCleanup Skrip umum (pembersihan) (Opsional) Skrip ini mengikuti pengujian unit (unit test). Skrip TestCleanup berjalan setelah semua pengujian unit di kelas pengujian tertentu. Skrip ini dijalankan menggunakan konteks istimewa.

Untuk informasi selengkapnya tentang berbagai konteks keamanan di mana masing-masing skrip ini dijalankan, lihat Gambaran umum string dan izin koneksi. Anda juga dapat meninjau bagian izin pengujian unit SQL Server di Izin yang Diperlukan untuk SQL Server Data Tools.

Urutan di mana skrip dijalankan

Penting untuk memahami urutan di mana setiap skrip berjalan. Meskipun Anda tidak dapat mengubah urutan tersebut, Anda dapat memutuskan skrip mana yang ingin Anda jalankan. Ilustrasi berikut ini mencakup pemilihan skrip yang dapat Anda gunakan dalam uji coba yang berisi dua pengujian unit SQL Server dan menunjukkan urutan eksekusinya:

Diagram dua pengujian unit untuk database.

Nota

Jika penyebaran proyek database SQL Server dikonfigurasi, langkah ini terjadi pada awal eksekusi pengujian, di bawah string koneksi konteks istimewa. Untuk informasi selengkapnya, lihat Cara: Mengonfigurasi eksekusi pengujian unit SQL Server.

Skrip inisialisasi dan pembersihan

Dalam SQL Server Unit Test Designer, skrip TestInitialize dan TestCleanup disebut sebagai skrip umum. Contoh sebelumnya mengasumsikan bahwa dua pengujian unit adalah bagian dari kelas pengujian yang sama. Akibatnya, mereka berbagi skrip TestInitialize dan TestCleanup yang sama. Untuk semua pengujian unit dalam kelas pengujian yang sama, ini selalu terjadi. Namun, jika uji coba Anda berisi pengujian unit dari kelas pengujian yang berbeda, skrip umum untuk kelas pengujian terkait dijalankan sebelum dan sesudah pengujian unit berjalan.

Jika Anda menulis pengujian unit hanya menggunakan SQL Server Unit Test Designer, Anda mungkin tidak terbiasa dengan konsep kelas pengujian. Setiap kali Anda membuat pengujian unit dengan membuka menu Uji dan memilih Pengujian Baru, SQL Server Data Tools menghasilkan kelas pengujian. Kelas pengujian muncul di Penjelajah Solusi dengan nama pengujian yang Anda tentukan, diikuti oleh .cs ekstensi atau .vb . Dalam setiap kelas pengujian, pengujian unit individual disimpan sebagai metode pengujian. Namun, terlepas dari jumlah metode pengujian (yaitu, pengujian unit), setiap kelas pengujian dapat memiliki nol atau satu skrip TestInitialize dan TestCleanup.

Anda dapat menggunakan skrip TestInitialize untuk menyiapkan database pengujian, dan Anda dapat menggunakan skrip TestCleanup untuk mengembalikan database pengujian ke status yang diketahui. Misalnya, Anda dapat menggunakan TestInitialize untuk membuat prosedur tersimpan pembantu yang Anda jalankan nanti, dalam skrip pengujian, untuk menguji prosedur tersimpan yang berbeda.

Skrip pra-pengujian dan pasca-pengujian

Skrip yang terkait dengan tindakan pra-pengujian dan pasca-pengujian kemungkinan akan bervariasi dari satu pengujian unit ke pengujian berikutnya. Anda dapat menggunakan skrip ini untuk membuat perubahan bertahap pada database lalu membersihkan perubahan tersebut.