Bagikan melalui


Cara: Membuat Kondisi Pengujian untuk SQL Server Unit Test Designer

Anda dapat menggunakan kelas TestCondition yang dapat diperluas untuk membuat kondisi pengujian baru. Misalnya, Anda dapat membuat kondisi pengujian baru yang memverifikasi jumlah kolom atau nilai dalam tataan hasil.

Untuk membuat kondisi pengujian

Prosedur ini menjelaskan cara membuat kondisi pengujian agar muncul di SQL Server Unit Test Designer.

  1. Di Visual Studio, buat proyek pustaka kelas.

  2. Pada menu Proyek, klik Tambahkan Referensi.

  3. Klik tab .NET .

  4. Di daftar Nama Komponen, pilih System.ComponentModel.Composition lalu klik OK.

  5. Tambahkan referensi rakitan yang diperlukan. Klik kanan simpul proyek lalu klik Tambahkan Referensi. Klik Telusuri dan navigasikan ke C:\Program Files (x86)\Microsoft SQL Server\110\DAC\Bin folder. Pilih Microsoft.Data.Tools.Schema.Sql.dll dan klik Tambahkan, lalu klik OK.

  6. Pada menu Proyek , klik Bongkar Proyek.

  7. Klik kanan proyek di Penjelajah Solusi dan pilih Edit <project name.csproj>.

  8. Tambahkan pernyataan Impor berikut setelah impor Microsoft.CSharp.targets:

    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(VisualStudioVersion)' == ''" />  
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(VisualStudioVersion)' != ''" />  
    
  9. Simpan file dan tutup. Klik kanan proyek di Penjelajah Solusi dan pilih Muat Ulang Proyek.

  10. Dapatkan kelas Anda dari kelas TestCondition .

  11. Tanda tangani assembly dengan nama yang kuat. Untuk informasi selengkapnya, lihat Cara: Menandatangani rakitan dengan Nama yang Kuat.

  12. Buat pustaka kelas.

  13. Sebelum dapat menggunakan kondisi pengujian baru, Anda harus menyalin rakitan yang ditandatangani ke folder %Program Files%\Microsoft Visual Studio <Version>\Common7\IDE\Extensions\Microsoft\SQLDB\TestConditions. Jika folder ini tidak ada, buatlah. Anda memerlukan hak administratif pada komputer Anda untuk menyalin ke direktori ini.

  14. Instal kondisi pengujian. Untuk informasi selengkapnya, lihat Kondisi Pengujian Kustom untuk Pengujian Unit SQL Server.

  15. Tambahkan pengujian unit SQL Server baru ke proyek untuk membuat referensi ke kondisi pengujian yang akan ditambahkan ke proyek. Anda dapat menambahkan referensi secara manual ke rakitan kondisi pengujian dalam proyek. Muat ulang perancang setelah langkah ini.

    Catatan

    Kelas pengujian harus ditambahkan untuk membuat referensi. Anda dapat menghapus kelas pengujian setelah referensi ditambahkan.

Dalam contoh berikut, Anda membuat kondisi pengujian sederhana yang memverifikasi bahwa jumlah kolom yang dikembalikan dalam ResultSet. Anda dapat menggunakan kondisi pengujian sederhana ini untuk memastikan bahwa kontrak untuk prosedur tersimpan sudah benar.

using System;  
using System.ComponentModel;  
using System.Data;  
using System.Data.Common;  
using Microsoft.Data.Tools.Schema.Sql.UnitTesting;  
using Microsoft.Data.Tools.Schema.Sql.UnitTesting.Conditions;  
  
namespace Ssdt.Samples.SqlUnitTesting  
{  
  
    [ExportTestCondition("ResultSet Column Count", typeof(ResultSetColumnCountCondition))]  
    public class ResultSetColumnCountCondition : TestCondition  
    {  
        private int _resultSet;  
        private int _count;  
        private int _batch;  
  
        public ResultSetColumnCountCondition()  
        {  
            _resultSet = 1;  
            _count = 0;  
            _batch = 1;  
        }  
  
        // method you need to override  
        // to perform the condition verification  
        public override void Assert(DbConnection validationConnection, SqlExecutionResult[] results)  
        {  
            // call base for parameter validation  
            base.Assert(validationConnection, results);  
  
            // verify batch exists  
            if (results.Length < _batch)  
                throw new DataException(String.Format("Batch {0} does not exist", _batch));  
  
            SqlExecutionResult result = results[_batch - 1];  
  
            // verify resultset exists  
            if (result.DataSet.Tables.Count < ResultSet)  
                throw new DataException(String.Format("ResultSet {0} does not exist", ResultSet));  
  
            DataTable table = result.DataSet.Tables[ResultSet - 1];  
  
            // actual condition verification  
            // verify resultset column count matches expected  
            if (table.Columns.Count != Count)  
                throw new DataException(String.Format(  
                    "ResultSet {0}: {1} columns did not match the {2} columns expected",  
                    ResultSet, table.Columns.Count, Count));  
        }  
  
        // this method is called to provide the string shown in the  
        // test conditions panel grid describing what the condition tests  
        public override string ToString()  
        {  
            return String.Format(  
                "Condition fails if ResultSet {0} does not contain {1} columns",  
                ResultSet, Count);  
        }  
  
        // below are the test condition properties  
        // that are exposed to the user in the property browser  
        #region Properties  
  
        // property specifying the resultset for which  
        // you want to check the column count  
        [Category("Test Condition")]  
        [DisplayName("ResultSet")]  
        [Description("ResultSet Number")]  
        public int ResultSet  
        {  
            get { return _resultSet; }  
  
            set  
            {  
                //basic validation  
                if (value < 1)  
                    throw new ArgumentException("ResultSet cannot be less than 1");  
  
                _resultSet = value;  
            }  
        }  
  
        // property specifying  
        // expected column count  
        [Category("Test Condition")]  
        [DisplayName("Count")]  
        [Description("Column Count")]  
        public int Count  
        {  
            get { return _count; }  
  
            set  
            {  
                //basic validation  
                if (value < 0)  
                    throw new ArgumentException("Count cannot be less than 0");  
  
                _count = value;  
            }  
        }  
  
        #endregion  
    }  
}  

Kelas untuk kondisi pengujian kustom mewarisi dari kelas TestCondition dasar. Karena properti tambahan pada kondisi pengujian kustom, pengguna dapat mengonfigurasi kondisi dari jendela Properti setelah mereka menginstal kondisi.

ExportTestConditionAttribute harus ditambahkan ke kelas yang memperluas TestCondition. Atribut ini memungkinkan kelas untuk ditemukan oleh SQL Server Data Tools dan digunakan selama desain pengujian unit dan eksekusi. Atribut mengambil dua parameter:

Parameter Atribut Position Deskripsi
DisplayName 1 Mengidentifikasi string dalam kotak kombo "Kondisi Pengujian". Nama ini harus unik. Jika dua kondisi memiliki nama tampilan yang sama, kondisi pertama yang ditemukan akan ditampilkan kepada pengguna, dan peringatan akan ditampilkan di Visual Studio Error Manager.
ImplementingType 2 Ini digunakan untuk mengidentifikasi ekstensi secara unik. Anda perlu mengubah ini agar sesuai dengan jenis tempat Anda menempatkan atribut. Contoh ini menggunakan jenis ResultSetColumnCountCondition sehingga gunakan typeof(ResultSetColumnCountCondition). Jika jenis Anda adalah NewTestCondition, gunakan typeof(NewTestCondition).

Dalam contoh ini, Anda menambahkan dua properti. Pengguna kondisi pengujian kustom dapat menggunakan properti ResultSet untuk menentukan hasil mana yang mengatur jumlah kolom harus diverifikasi. Kemudian, pengguna dapat menggunakan properti Hitung untuk menentukan jumlah kolom yang diharapkan.

Tiga atribut ditambahkan untuk setiap properti:

  • Nama kategori, yang membantu mengatur properti.

  • Nama tampilan properti.

  • Deskripsi properti.

Validasi dilakukan pada properti, untuk memverifikasi bahwa nilai properti ResultSet tidak kurang dari satu dan bahwa nilai properti Count lebih besar dari nol.

Metode Assert melakukan tugas utama kondisi pengujian. Anda mengambil alih metode Assert untuk memvalidasi bahwa kondisi yang diharapkan terpenuhi. Metode ini menyediakan dua parameter:

  • Parameter pertama adalah koneksi database yang digunakan untuk memvalidasi kondisi pengujian.

  • Parameter kedua dan yang lebih penting adalah array hasil, yang mengembalikan satu elemen array untuk setiap batch yang dijalankan.

Hanya satu batch yang didukung untuk setiap skrip pengujian. Oleh karena itu, kondisi pengujian akan selalu memeriksa elemen array pertama. Elemen array berisi Himpunan Data yang, pada gilirannya, berisi kumpulan hasil yang dikembalikan untuk skrip pengujian. Dalam contoh ini, kode memverifikasi bahwa tabel data dalam Himpunan Data berisi jumlah kolom yang sesuai. Untuk informasi selengkapnya, lihat Himpunan Data.

Anda harus mengatur pustaka kelas yang berisi kondisi pengujian yang akan ditandatangani, yang dapat Anda lakukan di properti proyek pada tab Penandatanganan.

Lihat Juga

Kondisi Pengujian Kustom untuk Pengujian Unit SQL Server