Bagikan melalui


Panduan: Menggunakan file konfigurasi untuk menentukan sumber data

Panduan ini menggambarkan cara menggunakan sumber data yang ditentukan dalam file app.config untuk pengujian unit. Anda akan mempelajari cara membuat file app.config yang menentukan sumber data yang dapat digunakan oleh kelas DataSourceAttribute. Tugas yang disajikan dalam panduan ini meliputi yang berikut ini:

  • Membuat file app.config.

  • Menentukan bagian konfigurasi kustom.

  • Mendefinisikan string koneksi.

  • Menentukan sumber data.

  • Mengakses sumber data menggunakan kelas DataSourceAttribute.

Nota

DataSourceAttribute saat ini hanya didukung pada .NET Framework.

Prasyarat

Untuk menyelesaikan panduan ini, Anda perlu:

  • Visual Studio Enterprise

  • Baik Microsoft Access atau Microsoft Excel untuk menyediakan data untuk setidaknya salah satu metode pengujian.

  • Solusi Visual Studio yang berisi proyek pengujian.

Menambahkan file app.config ke proyek

  1. Jika proyek pengujian Anda sudah memiliki file app.config, buka Tentukan bagian konfigurasi kustom.

  2. Klik kanan proyek pengujian Anda di Solution Explorer, lalu pilih Tambahkan>Item Baru.

    Jendela Tambahkan Item Baru terbuka. Jika Anda tidak melihat semua templat item, pilih Perlihatkan Semua Templat, lalu pilih templat item.

  3. Pilih templat File Konfigurasi Aplikasi dan klik Tambahkan.

Tentukan bagian konfigurasi kustom

Periksa file app.config. Ini berisi setidaknya deklarasi XML dan elemen akar.

Untuk menambahkan bagian konfigurasi kustom ke file app.config

  1. Elemen konfigurasi harus menjadi elemen akar dari app.config. Buat elemen configSections di dalam elemen configuration. configSections harus menjadi elemen pertama dalam file app.config.

  2. Dalam elemen configSections, buat elemen bagian .

  3. Di bagian elemen, tambahkan atribut yang disebut name dan tetapkan nilai microsoft.visualstudio.testtools. Tambahkan atribut lain yang disebut type dan tetapkan nilai Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

Elemen di bagian sebaiknya terlihat mirip dengan ini:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

Nota

Nama rakitan harus cocok dengan versi yang Anda gunakan.

Mendefinisikan string koneksi

String koneksi menentukan informasi khusus penyedia untuk mengakses sumber data. String koneksi yang ditentukan dalam file konfigurasi menyediakan informasi penyedia data yang dapat digunakan kembali di seluruh aplikasi. Di bagian ini, Anda membuat dua string koneksi yang akan digunakan oleh sumber data yang ditentukan di Bagian Konfigurasi Kustom.

Perhatian

String koneksi dapat berisi data sensitif (misalnya, kata sandi). String koneksi disimpan dalam teks biasa di kode sumber dan dalam rakitan yang telah dikompilasi. Batasi akses ke kode sumber dan rakitan untuk melindungi informasi sensitif ini.

Untuk menentukan string koneksi

  1. Setelah elemen configSections, buat elemen connectionStrings.

  2. Dalam connectionStrings, buat dua elemen tambah.

  3. Di pertama tambahkan elemen, buat atribut dan nilai berikut untuk koneksi ke database Microsoft Access:

Atribut Nilai
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

Di kedua, tambahkan elemen, buat atribut dan nilai berikut untuk koneksi ke lembar bentang Microsoft Excel:

Atribut Nilai
name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

Elemen connectionStrings akan terlihat mirip dengan ini:

<connectionStrings>
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>

Menentukan sumber data

Bagian sumber data berisi empat atribut yang digunakan oleh mesin uji untuk mengambil data dari sumber data.

  • name menentukan identitas yang digunakan oleh DataSourceAttribute untuk menentukan sumber data mana yang akan digunakan.

  • connectionString mengidentifikasi string koneksi yang dibuat di bagian Tentukan String Koneksi sebelumnya.

  • dataTableName menentukan tabel atau lembar yang menyimpan data untuk digunakan dalam pengujian.

  • dataAccessMethod menentukan teknik untuk mengakses nilai data di sumber data.

Di bagian ini, Anda akan menentukan dua sumber data untuk digunakan dalam pengujian unit.

Untuk menentukan sumber data

  1. Setelah elemen connectionStrings, buat elemen microsoft.visualstudio.testtools. Bagian ini dibuat di bagian 'Menentukan Bagian Konfigurasi Khusus'.

  2. Dalam elemen microsoft.visualstudio.testtools, buat elemen dataSources.

  3. Dalam elemen dataSources, tambahkan dua elemen .

  4. Di pertama tambahkan elemen, buat atribut dan nilai berikut untuk sumber data Microsoft Access:

Atribut Nilai
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

Di kedua menambahkan elemen, buat atribut dan nilai berikut untuk sumber data Microsoft Excel:

Atribut Nilai
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

Elemen microsoft.visualstudio.testtools seharusnya terlihat seperti ini:

<microsoft.visualstudio.testtools>
    <dataSources>
        <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
        <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
    </dataSources>
</microsoft.visualstudio.testtools>

File app.config akhir akan terlihat mirip dengan ini:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
    </configSections>
    <connectionStrings>
        <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
            <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

Membuat pengujian unit yang menggunakan sumber data yang ditentukan dalam app.config

Sekarang setelah file app.config ditentukan, Anda akan membuat pengujian unit yang menggunakan data yang terletak di sumber data yang ditentukan dalam file app.config. Di bagian ini, kami akan:

  • Buat sumber data yang ditemukan dalam file app.config.

  • Gunakan sumber data dalam dua metode pengujian yang membandingkan nilai di setiap sumber data.

Untuk membuat sumber data Microsoft Access

  1. Buat database Microsoft Access bernama testdatasource.accdb.

  2. Buat tabel dan beri nama MyDataTable di testdatasource.accdb.

  3. Buat dua bidang di MyDataTable bernama Arg1 dan Arg2 menggunakan jenis data Number.

  4. Tambahkan lima entitas ke MyDataTable dengan nilai berikut untuk Arg1 dan Arg2, masing-masing: (10.50), (3.2), (6.0), (0,8) dan (12312.1000).

  5. Simpan dan tutup database.

  6. Ubah string koneksi untuk menunjuk ke lokasi database. Ubah nilai Data Source untuk mencerminkan lokasi database.

Untuk membuat sumber data Microsoft Excel

  1. Buat lembar bentang Microsoft Excel bernama data.xlsx.

  2. Buat lembar bernama Sheet1 jika belum ada di data.xlsx.

  3. Buat dua header kolom dan beri nama Val1 dan Val2 di Sheet1.

  4. Tambahkan lima entitas ke Sheet1 dengan nilai berikut untuk Val1 dan Val2, masing-masing: (1,1), (2,2), (3,3), (4,4) dan (5,0).

  5. Simpan dan tutup spreadsheet.

  6. Ubah string koneksi untuk menunjuk ke lokasi spreadsheet. Ubah nilai dbq untuk mencerminkan lokasi spreadsheet.

Untuk membuat pengujian unit menggunakan sumber data app.config

  1. Tambahkan tes unit ke proyek pengujian.

  2. Ganti konten pengujian unit yang dibuat secara otomatis dengan kode berikut:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace TestProject1
    {
         [TestClass]
        public class UnitTest1
        {
            private TestContext context;
    
            public TestContext TestContext
            {
                get { return context; }
                set { context = value; }
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\testdatasource.accdb")]
            [DataSource("MyJetDataSource")]
            public void MyTestMethod()
            {
                int a = Int32.Parse(context.DataRow["Arg1"].ToString());
                int b = Int32.Parse(context.DataRow["Arg2"].ToString());
                Assert.AreNotEqual(a, b, "A value was equal.");
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\data.xlsx")]
            [DataSource("MyExcelDataSource")]
            public void MyTestMethod2()
            {
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
            }
        }
    }
    
  3. Periksa atribut DataSource. Perhatikan nama pengaturan dari file app.config.

  4. Bangun solusi Anda dan jalankan pengujian MyTestMethod dan MyTestMethod2.

Penting

Sebarkan item seperti sumber data sehingga dapat diakses oleh pengujian di direktori penyebaran.