CodeGym/Java Kursu/Modül 3/İlgili proje: test etme ve günlüğe kaydetme

İlgili proje: test etme ve günlüğe kaydetme

Mevcut

Bu program bir hipodromun taklididir.

Başlangıç ​​olarak, önceki projede olduğu gibi, depodan kendinize bir çatal yapın: https://github.com/CodeGymCC/hippodrome ve bu çatalı kendiniz klonlayın.

Göreviniz, test ve günlük kaydı eklemektir.

Gerekli testlerin listesi

Aşağıdaki listede, her öğe ayrı bir test yöntemi olarak uygulanmalıdır. Test yöntemleri için adlar bulurken, kısa ve öz olmaya çalışın, ancak aynı zamanda bu yöntemlerde tam olarak neyin test edildiğini kabaca anlayabilmeniz için. Örneğin, şu iki test sonucunu karşılaştırın:

İkinci durumda, ne tür testlerin geçmediğini anlamak daha zordur ve günlüklere bakmanız gerekecektir.

1. At sınıfı:

  1. inşaatçı
    • Yapıcıya ilk parametre olarak iletildiğinde IllegalArgumentExceptionatılacağını kontrol edin null. Bunu yapmak için yöntemi kullanın assertThrows;
    • Yapıcıya ilk parametre olarak iletildiğinde null, atılan istisnanın "Ad boş olamaz" mesajını içerip içermediğini kontrol edin. Bunu yapmak için, yakalanan istisnadan bir mesaj almanız ve assertEquals;
    • Yapıcıya ilk parametre olarak boş bir dize veya yalnızca boşluk karakterleri (boşluk, sekme vb.) içeren bir dize iletildiğinde IllegalArgumentException. Boşluk karakterlerinin farklı türevleriyle test etmek için, testi parametreli hale getirmeniz gerekir;
    • İlk parametre olarak yapıcıya boş bir dize veya yalnızca boşluk karakterleri (boşluk, sekme vb.) içeren bir dize iletildiğinde, atılan istisnanın "Ad boş olamaz."
    • Yapıcıya ikinci parametre olarak negatif bir sayı iletildiğinde, IllegalArgumentException;
    • Yapıcıya ikinci parametre olarak negatif bir sayı iletildiğinde, atılan istisnanın "Hız negatif olamaz" mesajını içerip içermediğini kontrol edin;
    • Yapıcıya üçüncü parametre olarak negatif bir sayı iletildiğinde, IllegalArgumentException;
    • Yapıcıya üçüncü parametre olarak negatif bir sayı iletildiğinde, atılan istisnanın "Mesafe negatif olamaz" mesajını içerip içermediğini kontrol edin;
  2. getName yöntemi
    • Yöntemin, yapıcıya ilk parametre olarak iletilen dizeyi döndürdüğünü kontrol edin;
  3. getSpeed ​​​​yöntemi
    • Yöntemin, yapıcıya ikinci parametre olarak iletilen sayıyı döndürdüğünü kontrol edin;
  4. getDistance yöntemi
    • Yöntemin, yapıcıya üçüncü parametre olarak iletilen sayıyı döndürdüğünü kontrol edin;
    • Nesne iki parametreli bir oluşturucu kullanılarak oluşturulduysa, yöntemin sıfır döndürdüğünü kontrol edin;
  5. taşıma yöntemi
    • Yöntemin, yöntemin içinde getRandomDouble0.2 ve 0.9 parametrelerini çağırdığını kontrol edin. MockedStaticBunu yapmak için yöntemini kullanmanız gerekir verify;
    • Yöntemin, aşağıdaki formülle hesaplanan mesafe değerini atadığını kontrol edin: distance + speed * getRandomDouble(0.2, 0.9). getRandomDoubleBunu yapmak için, testi parametreleştirerek ayarlamanız gereken belirli değerleri döndürmesi için kilitlemeniz gerekir .

2. Hipodrom sınıfı:

  1. Yapıcı
    • Yapıcıya iletildiğinde IllegalArgumentException; öğesinin atılacağını kontrol edin null;
    • Yapıcıya iletildiğinde null, atılan istisnanın "Atlar boş olamaz" mesajını içerip içermediğini kontrol edin;
    • Yapıcıya boş bir liste iletirken ; öğesinin atılacağını kontrol edin IllegalArgumentException;
    • Oluşturucuya boş bir liste iletirken, atılan istisnanın "Atlar boş olamaz" mesajını içerip içermediğini kontrol edin;
  2. getHorses yöntemi
    • Yöntemin, yapıcıya iletilen listeyle aynı sırada ve aynı nesneleri içeren bir liste döndürdüğünü kontrol edin. Hipodrom nesnesini oluştururken , yapıcıya 30 farklı atın listesini iletin;
  3. taşıma yöntemi
    • Yöntemin tüm atlarda move yöntemini çağırdığını kontrol edin. Hipodrom nesnesini oluştururken, yapıcıya 50 sahte atlık bir liste iletin ve verify.
  4. getWinner yöntemi
    • Yöntemin en büyük mesafe değerine sahip atı döndürdüğünü kontrol edin.

3. Ana sınıf

  1. ana yöntem
    • Yöntemin 22 saniyeden daha uzun süre yürütülmediğini kontrol edin. Bunu yapmak için Zaman Aşımı ek açıklamasını kullanın. Bu testi yazdıktan sonra devre dışı bırakın (Devre Dışı notunu kullanın). Böylece tüm testlerin yapılması zaman almayacaktır ve gerekirse manuel olarak da çalıştırılabilir.

Günlüğe kaydedilmesi gerekenler

1. Ana sınıf:

  1. Hipodrom nesnesini oluşturduktan sonra günlüğe şöyle bir giriş ekleyin:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Kazananlar hakkında bilgi görüntüledikten sonra günlüğe şöyle bir giriş ekleyin:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Hipodrom sınıfı:

  1. Yapıcıya null iletildiyse, istisnayı atmadan önce günlüğe şuna benzer bir giriş ekleyin:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. B. Yapıcıya boş bir liste iletildiyse, istisnayı atmadan önce günlüğe şuna benzer bir giriş ekleyin:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Yapıcının sonunda, günlüğe şöyle bir giriş ekleyin:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. At sınıfı:

  1. Yapıcıya bir ad yerine null iletilirse, istisnayı atmadan önce günlüğe şöyle bir giriş ekleyin:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Yapıcıya iletilen ad boşsa, istisnayı atmadan önce günlüğe şöyle bir giriş ekleyin:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Yapıcıya iletilen hız sıfırdan küçükse, istisnayı atmadan önce günlüğe şuna benzer bir giriş ekleyin:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Yapıcıya iletilen mesafe sıfırdan küçükse, istisnayı atmadan önce günlüğe şöyle bir giriş ekleyin:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Yapıcının sonunda, günlüğe şöyle bir giriş ekleyin:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Loglar, logs klasöründeki proje kök dizininde yer alması gereken hippodrome.log dosyasına yazılmalıdır . Dosya her gün hippodrome.2021-12-31.log kalıbına göre yeniden adlandırılmalı ve bunun yerine yeni bir hippodrome.log oluşturulmalıdır . Bunu yapmak için RollingFile eklentisini kullanın . Bu durumda 7 günden eski dosyalar silinmelidir. Bunu yapmak için aşağıdaki gibi bir yapı kullanabilirsiniz:

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

Google'da üç nokta yerine ne konulacağını arattı.😊


Proje analizi . Bitirdikten sonra izleyin!

Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok