Bagikan melalui


Menggunakan Kondisi Pengujian dalam Pengujian Unit SQL Server

Dalam pengujian unit SQL Server, satu atau beberapa skrip pengujian Transact-SQL dijalankan. Hasilnya dapat dievaluasi dalam skrip Transact-SQL dan THROW atau RAISERROR yang digunakan untuk mengembalikan kesalahan dan gagal dalam pengujian, atau kondisi pengujian dapat didefinisikan dalam pengujian untuk mengevaluasi hasilnya. Pengujian mengembalikan instans kelas SqlExecutionResult . Instans kelas ini berisi satu atau beberapa Himpunan Data, waktu eksekusi, dan baris yang terpengaruh oleh skrip. Semua informasi ini dikumpulkan selama eksekusi skrip. Hasil ini dapat dievaluasi dengan menggunakan kondisi pengujian. SQL Server Data Tools menyediakan serangkaian kondisi pengujian yang telah ditentukan sebelumnya. Anda juga dapat membuat dan menggunakan kondisi kustom; lihat Kondisi Pengujian Kustom untuk Pengujian Unit SQL Server.

Kondisi Pengujian yang telah ditentukan sebelumnya

Tabel berikut ini mencantumkan kondisi pengujian yang telah ditentukan sebelumnya yang bisa Anda tambahkan dengan menggunakan panel Kondisi Pengujian di SQL Server Unit Test Designer.

Kondisi Pengujian Deskripsi Kondisi Pengujian
Data Checksum Gagal jika checksum kumpulan hasil yang dikembalikan dari skrip Transact-SQL tidak cocok dengan checksum yang diharapkan. Untuk informasi selengkapnya, lihat Menentukan Checksum Data.

CATATAN: Kondisi pengujian ini tidak disarankan jika Anda mengembalikan data yang akan bervariasi di antara eksekusi pengujian. Misalnya, jika kumpulan hasil Anda berisi tanggal atau waktu yang dihasilkan, atau berisi kolom identitas, pengujian Anda akan gagal karena checksum akan berbeda pada setiap proses.
ResultSet Kosong Gagal jika kumpulan hasil yang dikembalikan dari skrip Transact-SQL tidak kosong.
Waktu Eksekusi Gagal jika skrip pengujian Transact-SQL membutuhkan waktu lebih lama dari yang diharapkan untuk dijalankan. Waktu eksekusi default adalah 30 detik.

Waktu eksekusi hanya berlaku untuk pengujian skrip pengujian, bukan untuk skrip pra-pengujian atau skrip pasca-pengujian.
Skema yang Diharapkan Gagal jika kolom dan jenis data dari kumpulan hasil tidak cocok dengan yang ditentukan untuk kondisi pengujian. Anda harus menentukan skema melalui properti kondisi pengujian. Untuk informasi selengkapnya, lihat Menentukan Skema yang Diharapkan.
Tidak meyakinkan Selalu menghasilkan tes dengan hasil Inconclusive. Ini adalah kondisi default yang ditambahkan ke setiap pengujian. Kondisi pengujian ini disertakan untuk menunjukkan bahwa verifikasi pengujian belum diimplementasikan. Hapus kondisi pengujian ini dari pengujian setelah Anda menambahkan kondisi pengujian lainnya.
ResultSet Tidak Kosong Gagal jika tataan hasil kosong. Anda dapat menggunakan kondisi pengujian ini atau EmptyResultSet dengan fungsi @@RAISERROR Transact-SQL di skrip pengujian Anda untuk menguji apakah pembaruan berfungsi dengan benar. Misalnya, Anda dapat menyimpan nilai pra-pembaruan, menjalankan pembaruan, membandingkan nilai pasca-pembaruan, dan memunculkan kesalahan jika Anda tidak mendapatkan hasil yang diharapkan.
Jumlah Baris Gagal jika tataan hasil tidak berisi jumlah baris yang diharapkan.
Nilai Skalar Gagal jika nilai tertentu dalam tataan hasil tidak sama dengan nilai yang ditentukan. Nilai default yang diharapkan adalah null.

Catatan

Kondisi pengujian Execution Time menentukan batas waktu di mana skrip pengujian Transact-SQL harus berjalan. Jika batas waktu ini terlampaui, pengujian gagal. Hasil pengujian juga mencakup statistik Durasi, yang berbeda dari kondisi pengujian Waktu Eksekusi. Statistik Durasi tidak hanya mencakup waktu eksekusi tetapi juga waktu untuk menyambungkan ke database dua kali; waktu untuk menjalankan skrip pengujian lainnya, seperti skrip pra-pengujian dan skrip pasca-pengujian; dan waktu untuk menjalankan kondisi pengujian. Oleh karena itu, tes dapat lulus meskipun durasinya lebih lama dari waktu eksekusinya.

Durasi yang dilaporkan tidak mencakup waktu yang digunakan untuk pembuatan data dan penyebaran skema karena terjadi sebelum pengujian dijalankan. Untuk melihat durasi pengujian, pilih uji coba di jendela Hasil Pengujian , klik kanan, dan pilih Tampilkan Detail Hasil Pengujian.

Anda dapat menambahkan kondisi pengujian ke SQL Server pengujian unit dengan menggunakan panel Kondisi Pengujian SQL Server Unit Test Designer. Untuk informasi selengkapnya, lihat Cara: Menambahkan Kondisi Pengujian ke Pengujian Unit SQL Server.

Anda juga dapat mengedit kode metode pengujian secara langsung untuk menambahkan lebih banyak fungsionalitas. Untuk informasi selengkapnya, lihat Cara: Membuka Pengujian Unit SQL Server untuk Mengedit dan Cara: Menulis Pengujian Unit SQL Server yang Berjalan dalam Cakupan Transaksi Tunggal. Misalnya, Anda dapat menambahkan fungsionalitas ke metode pengujian dengan menambahkan pernyataan Assert. Untuk informasi selengkapnya, lihat Menggunakan Pernyataan Transact-SQL dalam Pengujian Unit SQL Server.

Kegagalan yang Diharapkan

Anda dapat membuat pengujian unit SQL Server untuk menguji perilaku yang seharusnya tidak berhasil. Kegagalan yang diharapkan ini terkadang disebut sebagai pengujian negatif. Beberapa contoh akan mencakup hal-hal berikut:

  • Verifikasi bahwa prosedur tersimpan yang menghapus data pelanggan gagal jika Anda menentukan ID pelanggan yang tidak valid.

  • Verifikasi bahwa prosedur tersimpan yang mengisi pesanan gagal jika pesanan tidak pernah ditempatkan atau jika pesanan sudah terisi.

  • Verifikasi bahwa prosedur tersimpan yang membatalkan pesanan tidak dapat membatalkan pesanan yang telah selesai atau pesanan yang sudah dibatalkan.

Anda dapat menentukan SQL Server pengujian unit untuk prosedur tersimpan yang melemparkan pengecualian yang diharapkan. Anda dapat menambahkan atribut ke metode pengujian unit untuk menunjukkan pengecualian atau pengecualian mana yang diharapkan. Dengan melakukan ini, Anda mencegah pengujian gagal ketika pengecualian terjadi.

Untuk menandai metode pengujian unit SQL Server dengan pengecualian yang diharapkan, tambahkan atribut berikut:

[ExpectedSqlException(MessageNumber = nnnnn, Severity = x, MatchFirstError = false, State = y)]  

Di mana:

  • nnnnn adalah jumlah pesan yang diharapkan, misalnya 14025

  • x adalah tingkat keparahan pengecualian yang diharapkan

  • y adalah status pengecualian yang diharapkan

Parameter apa pun yang tidak ditentukan diabaikan. Anda meneruskan parameter ini ke pernyataan THROW dalam kode database Anda. Jika Anda menentukan MatchFirstError = false, maka atribut akan cocok dengan salah satu SqlErrors dalam pengecualian. Perilaku default (MatchFirstError = true) hanya cocok dengan kesalahan pertama yang terjadi.

Untuk contoh cara menggunakan pengecualian yang diharapkan dan pengujian unit SQL Server negatif, lihat Panduan: Membuat dan Menjalankan Pengujian Unit SQL Server.

Menentukan Checksum Data

Untuk menampilkan SQL Server Unit Test Designer, klik dua kali file kode sumber pengujian unit di Penjelajah Solusi.

Setelah Anda menambahkan kondisi pengujian Data Checksum ke pengujian unit database, Anda harus mengonfigurasi checksum yang diharapkan dengan menggunakan prosedur berikut:

Untuk menentukan checksum yang diharapkan

  1. Dalam daftar kondisi pengujian, klik kondisi pengujian Data Checksum yang ingin Anda tentukan checksumnya.

  2. Buka jendela Properti dengan menekan F4. Anda juga dapat membuka menu Tampilan dan mengklik Jendela Properti .

  3. (Opsional) Anda mungkin ingin mengubah properti (Nama) dari kondisi pengujian menjadi lebih deskriptif.

  4. Di properti Konfigurasi , klik tombol telusuri (...).

    Kotak dialog Konfigurasi untuk TestConditionName muncul.

  5. Tentukan koneksi ke database yang ingin Anda uji. Untuk informasi selengkapnya, lihat Cara: Membuat Koneksi Database.

  6. Secara default, isi Transact-SQL pengujian Anda muncul di panel edit. Anda dapat memodifikasi kode, jika perlu, untuk menghasilkan hasil yang diharapkan. Misalnya, jika pengujian Anda memiliki kode dalam pra-pengujian, Anda mungkin harus menambahkan kode tersebut.

    Penting

    Jika Anda mengubah kondisi checksum yang sebelumnya telah Anda tentukan checksumnya, setiap perubahan yang Anda buat di panel edit tidak disimpan. Anda harus membuat perubahan tersebut lagi sebelum mengklik Ambil.

  7. Klik Ambil.

    Transact-SQL dijalankan terhadap koneksi database yang ditentukan dan hasilnya muncul dalam kotak dialog.

  8. Jika hasilnya cocok dengan hasil pengujian yang diharapkan, klik OK. Jika tidak, ubah isi Transact-SQL dan ulangi langkah 6, 7, dan 8 hingga hasilnya seperti yang diharapkan.

    Kolom Nilai dari kondisi pengujian menampilkan nilai checksum yang diharapkan.

Menentukan Skema yang Diharapkan

Setelah Anda menambahkan kondisi pengujian Skema yang Diharapkan ke pengujian unit SQL Server, Anda harus mengonfigurasi skema yang diharapkan dengan menggunakan prosedur berikut:

Untuk menentukan skema yang diharapkan

  1. Dalam daftar kondisi pengujian, klik kondisi pengujian Skema yang diharapkan yang ingin Anda tentukan skemanya.

  2. Buka jendela Properti dengan menekan F4. Anda juga dapat membuka menu Tampilan dan mengklik jendela Properti .

  3. (Opsional) Anda mungkin ingin mengubah properti (Nama) dari kondisi pengujian menjadi lebih deskriptif.

  4. Di properti Konfigurasi , klik tombol telusuri (...).

    Kotak dialog Konfigurasi untuk TestConditionName muncul.

  5. Tentukan koneksi ke database yang ingin Anda uji. Untuk informasi selengkapnya, lihat Cara: Membuat Koneksi Database.

  6. Secara default, isi Transact-SQL pengujian Anda muncul di panel edit. Anda dapat memodifikasi kode, jika perlu, untuk menghasilkan hasil yang diharapkan. Misalnya, jika pengujian Anda memiliki kode dalam pra-pengujian, Anda mungkin harus menambahkan kode tersebut.

    Penting

    Jika Anda mengubah kondisi skema yang diharapkan yang sebelumnya telah Anda tentukan skemanya, perubahan apa pun yang Anda buat di panel edit tidak disimpan. Anda harus membuat perubahan tersebut lagi sebelum mengklik Ambil.

  7. Klik Ambil.

    Transact-SQL dijalankan terhadap koneksi database yang ditentukan dan hasilnya muncul dalam kotak dialog. Karena Anda memverifikasi skema, atau bentuk, dari kumpulan hasil dan bukan nilai hasil, Anda tidak perlu melihat data apa pun dalam hasil yang dikembalikan, selama kolom muncul seperti yang Anda harapkan muncul.

  8. Jika hasilnya cocok dengan hasil pengujian yang diharapkan, klik OK. Jika tidak, ubah isi Transact-SQL dan ulangi langkah 6, 7, dan 8 hingga hasilnya seperti yang diharapkan.

    Kolom Nilai dari kondisi pengujian menampilkan informasi tentang skema yang diharapkan. Misalnya, mungkin dikatakan "Diharapkan: 2 tabel".

Kondisi Pengujian yang Dapat Diperluas

Selain enam kondisi pengujian yang telah ditentukan sebelumnya, Anda dapat menulis kondisi pengujian baru Anda sendiri. Kondisi pengujian ini akan ditampilkan di panel Kondisi Pengujian SQL Server Unit Test Designer. Untuk informasi selengkapnya, lihat Kondisi Pengujian Kustom untuk Pengujian Unit SQL Server.

Lihat juga

Membuat dan Menentukan Pengujian Unit SQL Server
Menggunakan Pernyataan T-SQL dalam Pengujian Unit SQL Server
Skrip dalam Pengujian Unit SQL Server