Bagaimana bekerja dengan framework xUnit.Net

Saya telah menggunakan xUnit untuk beberapa waktu sekarang, dan itu adalah kerangka kerja pengujian Unit saya. Ini adalah alat pengujian unit sumber terbuka untuk kerangka kerja .Net yang kompatibel dengan ReSharper, CodeRush, TestDriven.Net, dan Xamarin. Anda dapat memanfaatkan xUnit.Net untuk menyatakan tipe pengecualian dengan mudah. Selain itu, Anda dapat memperluas atribut Fakta atau Teori di xUnit.Net dan ini menyediakan dukungan yang sangat baik untuk menulis pengujian unit berparameter. Ini link repositori Github untuk xUnit.Net.

Berikut cara bekerja dengan xUnit.net di Visual Studio. Untuk demonstrasi ini, kami akan menggunakan Visual Studio 2015, meskipun Anda juga dapat bekerja dengan versi Visual Studio lain yang kompatibel. Sekarang, ikuti langkah-langkah sederhana ini untuk mengatur lingkungan Anda untuk bekerja dengan xUnit.Net di Visual Studio.

  1. Buka Visual Studio 2015 UDE
  2. Buat proyek baru jenis "Perpustakaan Kelas"
  3. Simpan proyek dengan nama
  4. Selanjutnya, instal xUnit.Net melalui NuGet Package Manager

Dan itu dia! Untuk menjalankan tes unit dalam Visual Studio IDE, Anda dapat menggunakan pelari xUnit.net untuk Visual Studio. Inilah yang perlu Anda tentukan untuk menginstal paket xUnit.net [Runner: Visual Studio] menggunakan Jendela Konsol Package Manager:

Install-Package xunit.runner.visualstudio -Version 2.1.0

Ini semua yang Anda perlukan untuk mengatur lingkungan Anda sehingga Anda dapat menjalankan pengujian unit xUnit.Net dari dalam Visual Studio IDE.

Fakta dan teori

Berlawanan dengan atribut [Test] populer yang mungkin Anda kenal, Anda perlu menggunakan atribut [Fact] untuk menulis metode pengujian unit Anda menggunakan xUnit.net. Perhatikan bahwa xUnit.net mendukung dua jenis pengujian unit: fakta dan teori.

Sementara fakta digunakan untuk menguji kondisi invarian, teori adalah pengujian yang benar untuk sekumpulan data tertentu yang diteruskan sebagai argumen ke metode. Anda biasanya akan menggunakan atribut [Fact] untuk menulis pengujian unit yang tidak memiliki argumen metode.

Namun, atribut [Theory] memerlukan satu atau lebih instance DataAttribute untuk diteruskan sebagai argumen metode. Intinya, Anda ingin menggunakan atribut [Theory] untuk menulis pengujian unit berbasis data. Pengujian unit berdasarkan data adalah pengujian yang dijalankan pada berbagai set data.

Dengan asumsi bahwa xUnit.Net dan runnernya untuk Visual Studio diinstal, pertama-tama kita menulis pengujian unit sederhana menggunakan atribut [Fact]. Pertimbangkan metode pengujian unit berikut - kita akan memanfaatkan atribut [Fakta] di sini.

[Fact]

 public void CheckEqualityTest()

  {

     Assert.Equal(10, Sum(5, 5));

  }

Metode Sum menerima dua bilangan bulat dan mengembalikan jumlahnya.

  private int Sum(int x, int y)

  {

    return x + y;

  }

Ketika Anda menjalankan tes ini, tes unit lolos - Anda dapat melihatnya di Test Explorer Windows di Visual Studio IDE Anda. Sekarang mari kita jelajahi bagaimana kita dapat bekerja dengan teori untuk melaksanakan pengujian unit yang didorong oleh data.

Cuplikan kode berikut menggambarkan bagaimana Anda dapat bekerja dengan pengujian unit berbasis data menggunakan xUnit.Net.

[Theory, InlineData("This is a data driven test", "data")]

 public void CheckInputTest(string input, string substring)

 {

      Assert.Equal(true, input.Contains(substring));

 }

Lihat potongan kode yang diberikan di atas. Catat penggunaan atribut [Teori]. Kecuali pengujian unit Anda didorong oleh data, Anda harus memilih atribut [Fact] dalam metode pengujian unit Anda. Perhatikan bagaimana parameter telah diteruskan dalam metode pengujian unit berbasis data bernama CheckInput. Atribut InlineData menyediakan data kode sumber. Dalam contoh ini, data diteruskan ke metode pengujian unit melalui nilai inline. Anda juga dapat memiliki beberapa atribut InlineData - Anda hanya perlu memisahkannya menggunakan koma. Inilah cara Anda mencapai ini.

[Theory, InlineData("This is a data driven test", "data"),

            InlineData("This is another set of data for the data driven test", "data")]

        public void CheckInputTest(string input, string substring)

        {

            Assert.Equal(true, input.Contains(substring));

        }

Saat Anda menjalankan pengujian berdasarkan data di atas, metode CheckInputTest akan dijalankan dua kali - sekali untuk setiap set data masukan.