CodeGym/Kursus Java/Modul 3/Projek berkaitan: ujian dan pembalakan

Projek berkaitan: ujian dan pembalakan

Tahap, pelajaran
Tersedia

Program ini adalah tiruan dari hippodrome

Sebagai permulaan, seperti dalam projek sebelumnya, jadikan diri anda garpu dari repositori: https://github.com/CodeGymCC/hippodrome , dan klon sendiri garpu ini.

Tugas anda ialah menambah ujian dan pengelogan.

Senarai ujian yang diperlukan

Dalam senarai berikut, setiap item mesti dilaksanakan sebagai kaedah ujian yang berasingan. Apabila mengemukakan nama untuk kaedah ujian, cuba ringkas, tetapi pada masa yang sama, supaya anda boleh memahami secara kasar apa sebenarnya yang sedang diuji di dalamnya. Sebagai contoh, bandingkan kedua-dua keputusan ujian ini:

Dalam kes kedua, lebih sukar untuk memahami jenis ujian yang tidak lulus, dan anda perlu melihat log.

1. Kelas kuda:

  1. pembina
    • Semak bahawa apabila diserahkan kepada pembina sebagai parameter pertama IllegalArgumentException, akan dilemparkan null. Untuk melakukan ini, gunakan kaedah assertThrows;
    • Semak bahawa apabila diserahkan kepada pembina sebagai parameter pertama null, pengecualian yang dilemparkan akan mengandungi mesej "Nama tidak boleh batal.". Untuk melakukan ini, anda perlu mendapatkan mesej daripada pengecualian yang ditangkap dan menggunakan assertEquals;
    • Semak bahawa apabila menghantar rentetan kosong atau rentetan yang mengandungi hanya aksara ruang putih (ruang, tab, dll.) sebagai parameter pertama kepada pembina, . akan dilemparkan IllegalArgumentException. Untuk menguji dengan variasi aksara ruang putih yang berbeza, anda perlu menjadikan ujian itu sebagai parameter;
    • Semak bahawa apabila menghantar rentetan kosong atau rentetan yang mengandungi hanya aksara ruang putih (ruang, tab, dll.) kepada pembina sebagai parameter pertama, pengecualian yang dilemparkan akan mengandungi mesej "Nama tidak boleh kosong.";
    • Semak bahawa apabila nombor negatif dihantar kepada pembina sebagai parameter kedua, IllegalArgumentException;
    • Semak bahawa apabila nombor negatif dihantar kepada pembina sebagai parameter kedua, pengecualian yang dilemparkan akan mengandungi mesej "Kelajuan tidak boleh negatif.";
    • Semak bahawa apabila nombor negatif dihantar kepada pembina sebagai parameter ketiga, IllegalArgumentException;
    • Semak bahawa apabila menghantar nombor negatif sebagai parameter ketiga kepada pembina, pengecualian yang dilemparkan akan mengandungi mesej "Jarak tidak boleh negatif.";
  2. kaedah getName
    • Semak bahawa kaedah mengembalikan rentetan yang telah diluluskan sebagai parameter pertama kepada pembina;
  3. kaedah getSpeed
    • Semak bahawa kaedah mengembalikan nombor yang telah diluluskan sebagai parameter kedua kepada pembina;
  4. kaedah getDistance
    • Semak bahawa kaedah mengembalikan nombor yang telah diluluskan sebagai parameter ketiga kepada pembina;
    • Semak bahawa kaedah mengembalikan sifar jika objek dicipta menggunakan pembina dengan dua parameter;
  5. kaedah bergerak
    • Semak bahawa kaedah memanggil dalam kaedah getRandomDoubledengan parameter 0.2 dan 0.9. Untuk melakukan ini, anda perlu menggunakan MockedStatickaedahnya verify;
    • Semak bahawa kaedah memberikan nilai jarak yang dikira oleh formula: distance + speed * getRandomDouble(0.2, 0.9). Untuk melakukan ini, anda perlu menguncinya getRandomDoublesupaya ia mengembalikan nilai tertentu yang perlu anda tetapkan dengan membuat parameter ujian.

2. Kelas Hippodrome:

  1. Pembina
    • Semak bahawa apabila diserahkan kepada pembina IllegalArgumentException, ; akan dilemparkan null;
    • Semak bahawa apabila dihantar kepada constructor null, pengecualian yang dilemparkan akan mengandungi mesej "Kuda tidak boleh batal.";
    • Semak bahawa apabila menghantar senarai kosong kepada pembina, ; akan dilemparkan IllegalArgumentException;
    • Semak bahawa apabila menghantar senarai kosong kepada pembina, pengecualian yang dilemparkan akan mengandungi mesej "Kuda tidak boleh kosong.";
  2. kaedah getHorses
    • Semak bahawa kaedah mengembalikan senarai yang mengandungi objek yang sama dan dalam susunan yang sama seperti senarai yang dihantar kepada pembina. Apabila mencipta objek Hippodrome , hantar senarai 30 kuda yang berbeza kepada pembina;
  3. kaedah bergerak
    • Semak sama ada kaedah memanggil kaedah bergerak pada semua kuda. Apabila mencipta objek Hippodrome, hantar senarai 50 kuda olok-olok kepada pembina dan gunakan verify.
  4. kaedah getWinner
    • Semak bahawa kaedah mengembalikan kuda dengan nilai jarak terbesar.

3. Kelas utama

  1. kaedah utama
    • Semak bahawa kaedah dilaksanakan tidak lebih daripada 22 saat. Untuk melakukan ini, gunakan anotasi Tamat Masa. Selepas menulis ujian ini, lumpuhkannya (gunakan anotasi Dilumpuhkan). Jadi ia tidak akan mengambil masa untuk menjalankan semua ujian, dan jika perlu, ia boleh dijalankan secara manual.

Apa yang perlu dilog

1. Kelas utama:

  1. Selepas mencipta objek hippodrome, tambahkan entri seperti ini pada log:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Selepas memaparkan maklumat tentang pemenang, tambahkan entri seperti ini pada log:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Kelas hippodrome:

  1. Jika null diserahkan kepada pembina, maka sebelum membuang pengecualian, tambahkan entri seperti ini pada log:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Jika senarai kosong diserahkan kepada pembina, maka sebelum membuang pengecualian, tambahkan entri seperti ini pada log:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Pada penghujung pembina, tambahkan entri seperti ini pada log:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Kelas kuda:

  1. Jika null diserahkan kepada pembina dan bukannya nama, maka sebelum membuang pengecualian, tambahkan entri pada log seperti:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Jika nama yang dihantar kepada pembina kosong, maka sebelum membuang pengecualian, tambahkan entri seperti ini pada log:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Jika kelajuan yang dihantar kepada pembina adalah kurang daripada sifar, maka sebelum membuang pengecualian, tambahkan entri seperti ini pada log:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Jika jarak yang dilalui kepada pembina adalah kurang daripada sifar, maka sebelum membuang pengecualian, tambahkan entri seperti ini pada log:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Pada penghujung pembina, tambahkan entri seperti ini pada log:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Log hendaklah ditulis pada fail hippodrome.log , yang sepatutnya terletak dalam akar projek dalam folder log . Setiap hari fail itu hendaklah dinamakan semula mengikut corak hippodrome.2021-12-31.log dan hippodrome.log baharu perlu dibuat sebaliknya . Untuk melakukan ini, gunakan appender RollingFile . Dalam kes ini, fail yang lebih lama daripada 7 hari harus dipadamkan. Untuk melakukan ini, anda boleh menggunakan binaan seperti:

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

Googled apa yang perlu diganti dan bukannya tiga titik.😊


Analisis projek . Tonton selepas selesai!

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi