CodeGym/Java Course/Modul 3/Proyek terkait: pengujian dan logging

Proyek terkait: pengujian dan logging

Level 5, Pelajaran 7
Tersedia

Program ini merupakan tiruan dari hippodrome

Untuk memulainya, seperti pada proyek sebelumnya, buat sendiri garpu dari repositori: https://github.com/CodeGymCC/hippodrome , dan tiru sendiri garpu ini.

Tugas Anda adalah menambahkan pengujian dan pencatatan.

Daftar tes yang diperlukan

Dalam daftar berikut, setiap item harus diimplementasikan sebagai metode pengujian yang terpisah. Saat memberikan nama untuk metode pengujian, cobalah untuk ringkas, tetapi pada saat yang sama, sehingga Anda dapat memahami secara kasar apa sebenarnya yang sedang diuji di dalamnya. Misalnya, bandingkan dua hasil tes ini:

Dalam kasus kedua, lebih sulit untuk memahami jenis tes apa yang tidak lulus, dan Anda harus melihat lognya.

1. Kelas kuda:

  1. konstruktor
    • Periksa apakah ketika diteruskan ke konstruktor sebagai parameter pertama IllegalArgumentException, akan dilempar null. Untuk melakukan ini, gunakan metode assertThrows;
    • Periksa bahwa ketika diteruskan ke konstruktor sebagai parameter pertama null, pengecualian yang dilempar akan berisi pesan "Nama tidak boleh nol.". Untuk melakukan ini, Anda perlu mendapatkan pesan dari pengecualian yang tertangkap dan menggunakan assertEquals;
    • Periksa apakah saat meneruskan string kosong atau string yang hanya berisi karakter spasi putih (spasi, tab, dll.) sebagai parameter pertama ke konstruktor, . akan dilempar IllegalArgumentException. Untuk menguji dengan varian karakter spasi yang berbeda, Anda perlu membuat parameter pengujian;
    • Periksa apakah saat meneruskan string kosong atau string yang hanya berisi karakter spasi putih (spasi, tab, dll.) ke konstruktor sebagai parameter pertama, pengecualian yang dilontarkan akan berisi pesan "Nama tidak boleh kosong.";
    • Periksa apakah ketika angka negatif diteruskan ke konstruktor sebagai parameter kedua, IllegalArgumentException;
    • Periksa bahwa ketika angka negatif diteruskan ke konstruktor sebagai parameter kedua, pengecualian yang dilempar akan berisi pesan "Kecepatan tidak boleh negatif.";
    • Periksa apakah ketika angka negatif diteruskan ke konstruktor sebagai parameter ketiga, IllegalArgumentException;
    • Periksa bahwa saat meneruskan angka negatif sebagai parameter ketiga ke konstruktor, pengecualian yang dilontarkan akan berisi pesan "Jarak tidak boleh negatif.";
  2. metode getName
    • Periksa apakah metode mengembalikan string yang diteruskan sebagai parameter pertama ke konstruktor;
  3. metode getSpeed
    • Periksa apakah metode mengembalikan angka yang diteruskan sebagai parameter kedua ke konstruktor;
  4. metode getDistance
    • Periksa apakah metode mengembalikan angka yang diteruskan sebagai parameter ketiga ke konstruktor;
    • Periksa apakah metode mengembalikan nol jika objek dibuat menggunakan konstruktor dengan dua parameter;
  5. metode bergerak
    • Periksa apakah metode memanggil di dalam metode getRandomDoubledengan parameter 0.2 dan 0.9. Untuk melakukan ini, Anda perlu menggunakan MockedStaticmetodenya verify;
    • Periksa apakah metode menetapkan nilai jarak yang dihitung dengan rumus: distance + speed * getRandomDouble(0.2, 0.9). Untuk melakukan ini, Anda perlu menguncinya getRandomDoublesehingga mengembalikan nilai tertentu yang perlu Anda atur dengan parameterisasi pengujian.

2. Kelas hipodrom:

  1. Konstruktor
    • Periksa bahwa ketika diteruskan ke konstruktor IllegalArgumentException, ; akan dilempar null;
    • Periksa apakah ketika diteruskan ke konstruktor null, pengecualian yang dilontarkan akan berisi pesan "Horses can be null.";
    • Periksa apakah saat meneruskan daftar kosong ke konstruktor, ; akan dilempar IllegalArgumentException;
    • Periksa apakah saat meneruskan daftar kosong ke konstruktor, pengecualian yang dilempar akan berisi pesan "Kuda tidak boleh kosong.";
  2. metode getHorses
    • Periksa apakah metode mengembalikan daftar yang berisi objek yang sama dan dalam urutan yang sama dengan daftar yang diteruskan ke konstruktor. Saat membuat objek Hippodrome , berikan daftar 30 kuda berbeda ke konstruktor;
  3. metode bergerak
    • Periksa apakah metode tersebut memanggil metode langkah pada semua kuda. Saat membuat objek Hippodrome, berikan daftar 50 kuda tiruan ke konstruktor dan gunakan verify.
  4. metode getWinner
    • Periksa apakah metode mengembalikan kuda dengan nilai jarak terbesar.

3. Kelas utama

  1. metode utama
    • Periksa apakah metode dijalankan tidak lebih dari 22 detik. Untuk melakukannya, gunakan anotasi Timeout. Setelah menulis tes ini, nonaktifkan (gunakan anotasi Dinonaktifkan). Sehingga tidak memakan waktu untuk menjalankan semua tes, dan jika perlu dapat dijalankan secara manual.

Apa yang perlu dicatat

1. Kelas utama:

  1. Setelah membuat objek hipodrom, tambahkan entri seperti ini ke log:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Setelah menampilkan informasi tentang pemenang, tambahkan entri seperti ini ke log:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Kelas hipodrom:

  1. Jika null diteruskan ke konstruktor, maka sebelum melempar pengecualian, tambahkan entri seperti ini ke log:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. B. Jika daftar kosong diteruskan ke konstruktor, maka sebelum melempar pengecualian, tambahkan entri seperti ini ke log:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Di akhir konstruktor, tambahkan entri seperti ini ke log:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Kelas kuda:

  1. Jika null diteruskan ke konstruktor alih-alih nama, maka sebelum melempar pengecualian, tambahkan entri ke log seperti:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Jika nama yang diteruskan ke konstruktor kosong, maka sebelum melempar pengecualian, tambahkan entri seperti ini ke log:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Jika kecepatan yang diteruskan ke konstruktor kurang dari nol, maka sebelum melempar pengecualian, tambahkan entri seperti ini ke log:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Jika jarak yang diteruskan ke konstruktor kurang dari nol, maka sebelum melempar pengecualian, tambahkan entri seperti ini ke log:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Di akhir konstruktor, tambahkan entri seperti ini ke log:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Log harus ditulis ke file hippodrome.log , yang harus ditempatkan di root proyek di folder log . Setiap hari file harus diganti namanya sesuai dengan pola hippodrome.2021-12-31.log dan hippodrome.log baru harus dibuat sebagai gantinya . Untuk melakukannya, gunakan appender RollingFile . Dalam hal ini, file yang lebih lama dari 7 hari harus dihapus. Untuk melakukan ini, Anda dapat menggunakan konstruksi seperti:

<DefaultRolloverStrategy>
    <Delete>
        <IfFileName/>
        <IfLastModified/>
    </Delete>
</DefaultRolloverStrategy>

Cari di Google apa yang harus diganti, bukan tiga titik.😊


Analisis proyek . Tonton setelah selesai!

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar