Menu
CoddyTech

Pengujian Unit (NUnit/xUnit)

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 67 dari 70.

challenge icon

Tantangan

Mudah

Mari selesaikan proyek Library System-mu dengan menambahkan unit test! Pengujian penting untuk memastikan kodemu berfungsi dengan benar dan tetap berfungsi saat kamu membuat perubahan. Kamu akan membuat file pengujian khusus yang memverifikasi fungsi inti sistem perpustakaanmu.

Kamu akan melanjutkan pekerjaan dengan struktur proyek yang sudah ada dan menambahkan file pengujian baru:

  • Book.cs: Pertahankan class Book-mu dengan Id, Title, Author, IsAvailable, serta method Borrow() dan Return().
  • User.cs: Pertahankan class User-mu dengan pelacakan peminjaman, konstanta MaxBooks, CanBorrow(), dan method untuk mengelola buku yang dipinjam.
  • Library.cs: Pertahankan class Library-mu dengan logika peminjaman, method pencarian, serta method GetAllBooks() dan GetAllUsers().
  • LibraryTests.cs: Ini adalah file pengujian barumu! Buat class pengujian yang memverifikasi bahwa sistem perpustakaanmu berfungsi dengan benar. Kamu akan menulis method pengujian yang memeriksa berbagai skenario dan melaporkan apakah setiap pengujian berhasil atau gagal.
  • Program.cs: Titik masukmu yang menjalankan pengujian dan menampilkan hasilnya.

Class pengujianmu harus menyertakan method untuk menguji skenario berikut:

  • TestBookBorrow - Verifikasi bahwa peminjaman buku yang tersedia berhasil dan mengubah ketersediaannya
  • TestBookBorrowUnavailable - Verifikasi bahwa peminjaman buku yang sudah dipinjam gagal sebagaimana mestinya
  • TestUserBorrowingLimit - Verifikasi bahwa pengguna tidak dapat meminjam lebih dari 3 buku
  • TestBookReturn - Verifikasi bahwa pengembalian buku yang dipinjam berfungsi dengan benar
  • TestSearchByAuthor - Verifikasi bahwa pencarian berdasarkan penulis mengembalikan buku yang benar

Setiap method pengujian harus mengembalikan boolean yang menunjukkan apakah pengujian berhasil. Buat test runner sederhana yang menjalankan semua pengujian dan mencetak hasilnya.

Kamu akan menerima input berikut:

  • Jumlah skenario pengujian yang akan dijalankan (1-5, sesuai dengan pengujian yang tercantum di atas)

Untuk setiap pengujian yang dijalankan, cetak hasilnya dengan format:

{TestName}: {PASS|FAIL}

Setelah semua pengujian selesai, cetak ringkasan:

--- Test Summary ---
Passed: {count}
Failed: {count}
Total: {count}

Contohnya, jika inputnya adalah:

3

Outputnya seharusnya:

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3

Contoh lain dengan semua 5 pengujian:

5

Outputnya seharusnya:

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5

Pengujianmu harus membuat instance baru Book, User, dan Library untuk setiap pengujian agar semuanya terisolasi. Dengan begitu, status dari satu pengujian tidak memengaruhi pengujian lainnya. Anggap setiap pengujian sebagai verifikasi mandiri untuk perilaku tertentu dalam sistemmu!

Coba sendiri

using System;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // Baca jumlah pengujian yang akan dijalankan
            int numTests = Convert.ToInt32(Console.ReadLine());

            // TODO: Buat object LibraryTests dan jalankan numTests pengujian pertama
        }
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C# online