KodeGym/Kursus Jawa/3. modul/Proyek sing gegandhengan: testing lan logging

Proyek sing gegandhengan: testing lan logging

tingkat, wulangan
kasedhiya

Program iki minangka tiruan saka hippodrome

Kanggo miwiti, kaya ing proyek sadurunge, gawe garpu saka gudang: https://github.com/CodeGymCC/hippodrome , lan klone garpu iki dhewe.

Tugas sampeyan kanggo nambah testing lan logging.

Dhaptar tes sing dibutuhake

Ing dhaptar ing ngisor iki, saben item kudu dileksanakake minangka cara tes sing kapisah. Nalika nerangake jeneng kanggo metode tes, coba ringkes, nanging ing wektu sing padha, supaya sampeyan bisa ngerti persis apa sing diuji. Contone, mbandhingake rong asil tes iki:

Ing kasus kapindho, iku luwih angel kanggo ngerti apa jenis tes ora lulus, lan sampeyan kudu katon ing log.

1. Kelas jaran:

  1. konstruktor
    • Priksa manawa liwati menyang konstruktor minangka parameter pisanan IllegalArgumentException, bakal dibuwang null. Kanggo nindakake iki, gunakake cara assertThrows;
    • Priksa manawa liwati menyang konstruktor minangka parameter pisanan null, pangecualian sing dibuwang bakal ngemot pesen "Jeneng ora bisa null.". Kanggo nindakake iki, sampeyan kudu njaluk pesen saka istiméwa kejiret lan nggunakake assertEquals;
    • Priksa manawa nalika ngirim senar kosong utawa senar sing mung ngemot karakter spasi putih (spasi, tab, lsp) minangka parameter pisanan kanggo konstruktor, . bakal dibuwang IllegalArgumentException. Kanggo nyoba karo macem-macem varian karakter spasi putih, sampeyan kudu nggawe test parameterized;
    • Priksa manawa nalika ngirim senar kosong utawa senar sing mung ngemot karakter spasi (spasi, tab, lsp.) menyang konstruktor minangka parameter pisanan, pengecualian sing dibuwang bakal ngemot pesen "Jeneng ora bisa kosong.";
    • Priksa manawa nomer negatif diterusake menyang konstruktor minangka parameter kapindho, IllegalArgumentException;
    • Priksa manawa nomer negatif dikirim menyang konstruktor minangka parameter kapindho, pangecualian sing dibuwang bakal ngemot pesen "Kacepetan ora bisa negatif.";
    • Priksa manawa nomer negatif diterusake menyang konstruktor minangka parameter katelu, IllegalArgumentException;
    • Priksa manawa nalika ngliwati nomer negatif minangka parameter katelu kanggo konstruktor, pangecualian sing dibuwang bakal ngemot pesen "Jarak ora bisa negatif.";
  2. metode getName
    • Priksa manawa cara kasebut ngasilake senar sing dilewati minangka parameter pisanan kanggo konstruktor;
  3. metode getSpeed
    • Priksa manawa cara kasebut ngasilake nomer sing dilewati minangka parameter kapindho kanggo konstruktor;
  4. metode getDistance
    • Priksa manawa cara kasebut ngasilake nomer sing dilewati minangka parameter katelu kanggo konstruktor;
    • Priksa manawa cara kasebut ngasilake nol yen obyek digawe nggunakake konstruktor kanthi rong paramèter;
  5. cara ngalih
    • Priksa manawa metode kasebut nelpon ing njero metode getRandomDoublekanthi paramèter 0.2 lan 0.9. Kanggo nindakake iki, sampeyan kudu nggunakake MockedStaticcara verify;
    • Priksa manawa cara kasebut menehi nilai jarak sing diwilang kanthi rumus distance + speed * getRandomDouble(0.2, 0.9):. Kanggo nindakake iki, sampeyan kudu ngunci getRandomDoublesupaya bisa ngasilake nilai-nilai tartamtu sing kudu disetel kanthi parameter tes.

2. Kelas Hippodrome:

  1. Konstruktor
    • Priksa manawa liwati menyang konstruktor IllegalArgumentException, bakal dibuwang null;
    • Priksa manawa liwati menyang konstruktor null, pangecualian sing dibuwang bakal ngemot pesen "Kuda ora bisa null.";
    • Priksa manawa nalika ngirim dhaptar kosong menyang konstruktor, ; bakal dibuwang IllegalArgumentException;
    • Priksa manawa nalika ngirim dhaptar kosong menyang konstruktor, pengecualian sing dibuwang bakal ngemot pesen "Kuda ora bisa kosong.";
  2. metode getHorses
    • Priksa manawa cara kasebut ngasilake dhaptar sing ngemot obyek sing padha lan ing urutan sing padha karo dhaptar sing diterusake menyang konstruktor. Nalika nggawe obyek Hippodrome , pass dhaftar 30 jaran beda kanggo konstruktor;
  3. cara ngalih
    • Priksa manawa metode kasebut diarani cara pamindhahan ing kabeh jaran. Nalika nggawe obyek Hippodrome, pass dhaftar 50 jaran mock kanggo konstruktor lan nggunakake verify.
  4. metode getWinner
    • Priksa manawa cara kasebut ngasilake jaran kanthi nilai jarak paling gedhe.

3. Kelas utama

  1. metode utama
    • Priksa manawa metode kasebut dieksekusi ora luwih saka 22 detik. Kanggo nindakake iki, gunakake anotasi Timeout. Sawise nulis tes iki, mateni (gunakake anotasi Disabled). Dadi ora butuh wektu kanggo mbukak kabeh tes, lan yen perlu, bisa ditindakake kanthi manual.

Apa sing kudu dicathet

1. Kelas Utama:

  1. Sawise nggawe obyek hippodrome, tambahake entri kaya iki menyang log:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Sawise nampilake informasi babagan pemenang, tambahake entri kaya iki ing log:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Kelas Hippodrome:

  1. Yen null diterusake menyang konstruktor, banjur sadurunge mbuwang pengecualian, tambahake entri kaya iki menyang log:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Yen dhaptar kosong dikirim menyang konstruktor, banjur sadurunge mbuwang pengecualian, tambahake entri kaya iki menyang log:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Ing pungkasan konstruktor, tambahake entri kaya iki menyang log:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Kelas jaran:

  1. Yen null diterusake menyang konstruktor tinimbang jeneng, banjur sadurunge mbuwang pengecualian, tambahake entri menyang log kaya:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Yen jeneng sing dikirim menyang konstruktor kosong, banjur sadurunge mbuwang pengecualian, tambahake entri kaya iki menyang log:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Yen kacepetan liwati menyang konstruktor kurang saka nol, banjur sadurunge mbuwang pangecualian, nambah entri kaya iki kanggo log:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Yen jarak sing dilewati menyang konstruktor kurang saka nol, banjur sadurunge mbuwang pengecualian, tambahake entri kaya iki menyang log:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Ing pungkasan konstruktor, tambahake entri kaya iki menyang log:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Log kudu ditulis menyang file hippodrome.log , sing kudu ana ing root project ing folder log . Saben dina file kasebut kudu diganti jeneng miturut pola hippodrome.2021-12-31.log lan hippodrome.log anyar kudu digawe tinimbang . Kanggo nindakake iki, gunakake appender RollingFile . Ing kasus iki, file sing luwih lawas saka 7 dina kudu dibusak. Kanggo nindakake iki, sampeyan bisa nggunakake konstruksi kaya:

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

Googling apa sing kudu diganti tinimbang telung titik.😊


Analisis proyek . Nonton sawise rampung!

Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar