C #. Contoh membuat unit test di MS Visual Studio

  1. Konten
  2. Eksekusi
  3. 2. Persiapan teks modul Program.cs
  4. 2.2. Jadikan Program kelas publik
  5. 3. Daftar program yang diuji
  6. 4. Membuat tes
  7. 4.1. Menambahkan proyek baru ke solusinya
  8. 4.2. Struktur solusi
  9. 4.3. Teks dari file "UnitTest1.cs". Atribut [TestMethod] dan [TestClass]
  10. 4.4. Membuat perubahan pada teks modul UnitTest1. Mengubah nama metode pengujian
  11. 4.5. Menghubungkan proyek MinApp ke proyek TestMinApp
  12. 4.6. Membuat perubahan pada teks modul UnitTest1.cs
  13. 4.6.2. Teks metode TestMin ()
  14. 4.7. Teks modul UnitTest1.cs
  15. 5. Jalankan tes dan periksa hasil tes
  16. 6. Hasilnya. Interaksi antar proyek

Topik ini menjelaskan proses selangkah demi selangkah membuat Tes Unit sederhana di Microsoft Visual Studio 2010 (C #) untuk aplikasi seperti Aplikasi Konsol. Dengan menggunakan contoh ini, Anda bisa belajar cara membuat tes Unit Anda sendiri. Contoh ini juga menunjukkan penggunaan kelas Assert untuk menguji operasi fungsi.

Konten

Kondisi masalah

Untuk aplikasi seperti Aplikasi Konsol, kembangkan tes Unit yang menguji operasi fungsi Min (), yang menentukan elemen maksimum tiga angka.

Untuk fungsi Min (), atur metode uji ke TestMin (). Periksa fungsinya.

Eksekusi

1. Buat aplikasi menggunakan template Konsol Aplikasi

Jalankan MS Visual Studio 2010 untuk dieksekusi. Untuk membuat proyek menggunakan pola Aplikasi Konsol, urutan perintah berikut harus dipanggil:

File -> Baru -> Proyek ...

Akibatnya, jendela Proyek Baru terbuka. Di jendela, pilih templat Aplikasi Konsol seperti yang ditunjukkan pada Gambar 1. Templat dipilih dalam tab Visual C #.

Visual C # -> Aplikasi Konsol

Visual C # -> Aplikasi Konsol

Fig. 1. Jendela "Proyek Baru". Memilih Aplikasi Jenis Aplikasi Konsol

2. Persiapan teks modul Program.cs

2.1. Tambahkan fungsi Min () ke teks modul

Di badan kelas Program, tambahkan teks fungsi Min ().

Fungsi ini dinyatakan sebagai publik (statis) dan publik. Min () teks fungsi

public static int Min (int a, int b, int c) {int min = a; jika (min> b) min = b; jika (min> c) min = c; min kembali; }

public static int Min (int a, int b, int c) {int min = a;  jika (min> b) min = b;  jika (min> c) min = c;  min kembali;  }

Fig. 2. Tampilan jendela MS Visual Studio 2010, modul "Program.cs"

2.2. Jadikan Program kelas publik

Untuk memiliki akses ke fungsi Min () dari kelas Program, Anda harus membuat kelas ini tersedia untuk umum. Untuk melakukan ini, sebelum mendeklarasikan sebuah kelas, Anda perlu mendefinisikan kata kunci publik.

... namespace MinApp {Program kelas publik {// metode kelas // ...}} ...

Setelah itu, program uji siap.

3. Daftar program yang diuji

Saat ini, daftar program yang sedang diuji adalah sebagai berikut:

menggunakan Sistem; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan System.Text; namespace MinApp {program kelas publik {public static int Min (int a, int b, int c) {int min = a; jika (min> b) min = b; jika (min> c) min = c; min kembali; } static void Main (string [] args) {Console.WriteLine ("Demo pengujian unit dalam C #."); }}}

Karena program ini akan diuji dari modul pengujian lain, tidak perlu memasukkan hal lain dalam fungsi Main (). Karena, sesuai dengan kondisi masalah, Anda perlu menguji operasi fungsi Min (). Dan ini akan dilakukan dari modul pengujian. Saat ini, program kami siap untuk diuji.

4. Membuat tes

Tes ini dibuat oleh proyek terpisah (Proyek) dalam solusi (Solusi). Program yang sedang diuji tidak mengetahuinya. Program yang akan menguji (program pengujian) akan memanggil fungsi-fungsi dari program yang sedang diuji. Dalam kasus kami, program pengujian akan memanggil fungsi

int Min (int, int, int);

4.1. Menambahkan proyek baru ke solusinya

Untuk solusi ini (Solusi) Anda perlu menambahkan proyek baru menggunakan perintah

File-> Tambah-> Proyek Baru ...

Jendela untuk membuat proyek baru ditunjukkan pada Gambar 3.

Fig. 3. Jendela untuk membuat proyek jenis Uji Proyek

Sekelompok templat Visual C # -> Tes dipilih di jendela. Dari templat yang ditampilkan, templat proyek "Proyek Uji" dipilih. Di bidang "Nama" nama proyek yang akan menguji program kami ditunjukkan. Anda perlu mengatur, misalnya, TestMinApp. Proyek ini terletak di folder terpisah "E: \ Test \ MinApp".

Proyek ini terletak di folder terpisah E: \ Test \ MinApp

Fig. 4. Teks dari modul UnitTest1.cs. Jendela utilitas Solution Explorer dengan proyek TestMinApp dan MinApp ditampilkan

4.2. Struktur solusi

Seperti dapat dilihat dari Gambar 4, utilitas Solution Explorer menampilkan struktur Item Solusi, yang berisi dua proyek:

  • proyek MinApp. Ini adalah proyek yang dibuat menggunakan templat Aplikasi Konsol dengan fungsi Min () yang ingin Anda protes;
  • Proyek TestMinApp. Proyek ini dirancang untuk menguji fitur-fitur proyek MinApp. Kode program yang menguji fungsi Min () akan dimasukkan ke dalam file proyek UnitTest1 proyek TestMinApp.

Kedua proyek dapat dilakukan secara independen satu sama lain.

4.3. Teks dari file "UnitTest1.cs". Atribut [TestMethod] dan [TestClass]

Dalam proyek TestMinApp, file tes UnitTest1.cs menjadi perhatian utama. File ini berisi metode yang akan menguji fungsi proyek MinApp. Proyek TestMinApp dapat berisi sejumlah file yang berisi tes (misalnya, UnitTest2.cs, UnitTest3.cs, dll.).

Daftar file UnitTest1.cs yang dihasilkan oleh MS Visual Studio 2010 adalah sebagai berikut:

menggunakan Sistem; menggunakan System.Text; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Deskripsi ringkasan untuk UnitTest1 /// </ ringkasan> [TestClass] kelas publik UnitTest1 {public UnitTest1 () {// // TODO: Tambahkan logika konstruktor di sini //} private TestContext testContextInstance; /// <summary> /// Mendapat atau menetapkan konteks pengujian. /// </ ringkasan> publik TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; }} #region Atribut tes tambahan // Anda dapat menggunakan tes Anda // // Gunakan ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Gunakan ClassCleanup untuk menjalankan kode setelah semua tes di kelas dijalankan // [ClassCleanup ()] // public static static MyClassCleanup () {} // // Gunakan TestInitialize untuk menjalankan kode sebelum menjalankan setiap pengujian // [TestInitialize ()] // public void MyTestInitialize () {} // // Gunakan TestCleanup untuk menjalankan kode setelah setiap pengujian dijalankan // [TestCleanup ()] // public void MyTestCleanup ( ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Tambahkan logika uji di sini //}}}

Seperti dapat dilihat dari kode di atas, file tersebut berisi kelas bernama UnitTest1. Kelas memiliki metode publik yang disebut TestMethod1 (). Sebelum menerapkan metode TestMethod1 (), atribut [TestMethod] ditempatkan. Ini berarti bahwa Anda harus memasukkan kode yang akan menguji fungsi proyek MinApp di tubuh metode.

Di kelas, Anda dapat memasukkan sejumlah metode yang akan menguji fungsi yang berbeda dari modul yang berbeda. Yang utama adalah bahwa metode ini ditandai dengan atribut [TestMethod].

4.4. Membuat perubahan pada teks modul UnitTest1. Mengubah nama metode pengujian

Anda dapat mengubah nama metode dan menambahkan metode baru yang ditandai dengan atribut [TestMethod] dalam modul UnitTest1.cs. Dengan ini, dalam teks modul UnitTest1.cs, Anda perlu mengganti nama metode TestMethod1 () menjadi TestMin ().

Setelah perubahan dibuat, teks singkat dari modul file UnitTest1.cs akan menjadi:

menggunakan Sistem; menggunakan System.Text; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Deskripsi ringkasan untuk UnitTest1 /// </ ringkasan> [TestClass] kelas publik UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Tambahkan tes logika di sini //}}}

4.5. Menghubungkan proyek MinApp ke proyek TestMinApp

Untuk memiliki akses ke fungsi Min () (proyek MinApp) dari proyek TestMinApp, Anda harus menghubungkan namespace di mana fungsi ini berada.

Untuk melakukan ini, pertama-tama, Anda perlu memanggil menu konteks untuk proyek TestMinApp. Kemudian dalam menu konteks Anda perlu memanggil perintah "Tambah Referensi ..." (Gambar 5).

 (Gambar 5)

Fig. 5. Tim "Tambahkan Referensi ..."

Akibatnya, jendela Tambahkan Referensi akan terbuka, di mana Anda harus memilih proyek MinApp.

Fig. 6. Jendela "Tambahkan Referensi". Menghubungkan MinApp proyek

Setelah tindakan selesai, fungsi proyek MinApp akan tersedia untuk digunakan dalam proyek TestMinApp.

Setelah tindakan selesai, fungsi proyek MinApp akan tersedia untuk digunakan dalam proyek TestMinApp

Fig. 7. Tab referensi dengan proyek MinApp yang terhubung

4.6. Membuat perubahan pada teks modul UnitTest1.cs
4.6.1. Menambahkan ruang nama MinApp ke modul UnitTest1.cs

Pada langkah ini, dalam modul UnitTest1.cs, Anda perlu menambahkan namespace MinApp menggunakan direktif menggunakan:

menggunakan Sistem; menggunakan System.Text; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan Microsoft.VisualStudio.TestTools.UnitTesting; menggunakan MinApp; namespace TestMinApp {...}

4.6.2. Teks metode TestMin ()

Dalam teks metode TestMin (), masukkan kode berikut:

... [TestMethod] public void TestMin () {// // TODO: Tambahkan logika uji di sini // int min; min = Program. Min (3, 4, 5); Tegas .AreEqual (2, mnt); } ...

4.7. Teks modul UnitTest1.cs

Teks dari seluruh modul UnitTest1.cs adalah sebagai berikut:

menggunakan Sistem; menggunakan System.Text; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan Microsoft.VisualStudio.TestTools.UnitTesting; menggunakan MinApp; namespace TestMinApp {/// <summary> /// Deskripsi ringkasan untuk UnitTest1 /// </ ringkasan> [TestClass] kelas publik UnitTest1 {public UnitTest1 () {// // TODO: Tambahkan logika konstruktor di sini //} private TestContext testContextInstance; /// <summary> /// Mendapat atau menetapkan konteks pengujian. /// </ ringkasan> publik TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; }} #region Atribut tes tambahan // Anda dapat menggunakan tes Anda // // Gunakan ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Gunakan ClassCleanup untuk menjalankan kode setelah semua tes di kelas dijalankan // [ClassCleanup ()] // public static static MyClassCleanup () {} // // Gunakan TestInitialize untuk menjalankan kode sebelum menjalankan setiap pengujian // [TestInitialize ()] // public void MyTestInitialize () {} // // Gunakan TestCleanup untuk menjalankan kode setelah setiap pengujian dijalankan // [TestCleanup ()] // public void MyTestCleanup ( ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Tambahkan logika uji di sini // int min; min = Program. Min (3, 4, 5); Tegas .AreEqual (2, mnt); }}}

5. Jalankan tes dan periksa hasil tes

Di Microsoft Visual Studio 2010, menu khusus perintah yang disebut Tes diimplementasikan untuk bekerja dengan tes Unit.

Untuk menjalankan tes eksekusi, pilih salah satu perintah.

Tes -> Jalankan -> Tes dalam Konteks Saat Ini

atau

Tes -> Jalankan -> Semua Tes dalam Solusi

seperti yang ditunjukkan pada Gambar 8.

Fig. 8. Panggil perintah mulai tes dan lihat hasilnya.

Setelah menjalankan tes, hasilnya dapat dilihat di bagian bawah jendela Hasil Uji. Seperti dapat dilihat dari gambar, tes tidak lulus. Ini logis, karena dalam fungsi Assert.AreEqual () kita membandingkan angka 2 dan 3, yang berbeda. Di sini, angka 2 diperkenalkan secara khusus, bukan 3.

Jika alih-alih nomor 2 Anda memasukkan jawaban yang benar - nomor 3 (minimal antara 3, 4, 5), maka tes akan berlalu (Gambar 9). Dalam hal ini, teks dari metode TestMin () adalah sebagai berikut:

... [TestMethod] public void TestMin () {// // TODO: Tambahkan logika uji di sini // int min; min = Program. Min (3, 4, 5); Tegas .AreEqual (3, mnt); } ...

Jendela hasil ditunjukkan pada Gambar 9.

Fig. 9. Hasil tes untuk kasing, jika Anda memasukkan jawaban yang benar

Sekarang kita dapat menyimpulkan bahwa fungsi Min () untuk kasus ini berfungsi dengan benar.

6. Hasilnya. Interaksi antar proyek

Dalam tulisan ini, dua proyek dibentuk dalam solusinya. Satu proyek MinApp berisi fungsi Min () yang ingin Anda uji. Proyek kedua, TestMinApp, berisi metode pengujian.

Di Microsoft Visual Studio 2010, setiap proyek diluncurkan menggunakan perintah menu yang berbeda. Jadi, proyek MinApp diluncurkan dengan cara standar dari menu Run. Dan proyek TestMinApp diluncurkan dari menu Uji khusus.

Topik Terkait