CodeGym/Java курс/Модул 3/Свързан проект: тестване и регистриране

Свързан проект: тестване и регистриране

На разположение

Тази програма е имитация на хиподрум

Като начало, Howто в предишния проект, направете си разклонение от хранorщето: https://github.com/CodeGymCC/hippodrome и сами клонирайте това разклонение.

Вашата задача е да добавите тестване и регистриране.

Списък на необходимите тестове

В следващия списък всеки елемент трябва да бъде внедрен като отделен тестов метод. Когато измисляте имена на тестови методи, опитайте се да сте кратки, но в същото време, за да можете грубо да разберете Howво точно се тества в тях. Например, сравнете тези два резултата от теста:

Във втория случай е по-трудно да се разбере Howъв вид тестове не са преминали и ще трябва да погледнете дневниците.

1. Клас кон:

  1. конструктор
    • Проверете дали при предаване на конструктора като първи параметър IllegalArgumentExceptionще бъде хвърлено null. За целта използвайте метода assertThrows;
    • Проверете дали когато се предаде на конструктора като първи параметър null, хвърленото изключение ще съдържа съобщението „Името не може да бъде нула.“. За да направите това, трябва да получите съобщение от уловеното изключение и да използвате assertEquals;
    • Проверете дали при подаване на празен низ or низ, съдържащ само празни знаци (интервал, табулация и т.н.) като първи параметър към конструктора, ще бъде хвърлен IllegalArgumentException. За да тествате с различни варианти на бели интервали, трябва да направите теста параметризиран;
    • Проверете дали при подаване на празен низ or низ, съдържащ само празни знаци (интервал, табулация и т.н.) към конструктора като първи параметър, хвърленото изключение ще съдържа съобщението „Името не може да бъде празно.“;
    • Проверете дали когато отрицателно число се предава на конструктора като втори параметър, IllegalArgumentException;
    • Проверете дали когато отрицателно число бъде предадено на конструктора като втори параметър, хвърленото изключение ще съдържа съобщението „Speed ​​​​cannot be negative.“;
    • Проверете дали когато отрицателно число се предава на конструктора като трети параметър, IllegalArgumentException;
    • Проверете дали при подаване на отрицателно число като трети параметър към конструктора, хвърленото изключение ще съдържа съобщението „Разстоянието не може да бъде отрицателно.“;
  2. getName метод
    • Проверете дали методът връща низа, който е предаден като първи параметър на конструктора;
  3. getSpeed ​​метод
    • Проверете дали методът връща числото, което е било предадено като втори параметър на конструктора;
  4. getDistance метод
    • Проверете дали методът връща числото, което е било предадено като трети параметър на конструктора;
    • Проверете дали методът връща нула, ако обектът е създаден с помощта на конструктор с два параметъра;
  5. метод на преместване
    • Проверете дали методът се обажда вътре в метода getRandomDoubleс параметри 0.2 и 0.9. За да направите това, трябва да използвате MockedStaticнеговия метод verify;
    • Проверете дали методът присвоява стойността на разстоянието, изчислена по формулата: distance + speed * getRandomDouble(0.2, 0.9). За да направите това, трябва да го заключите getRandomDouble, така че да връща определени стойности, които трябва да зададете чрез параметризиране на теста.

2. Клас Хиподрум:

  1. Конструктор
    • Проверете дали когато се предаде на конструктора IllegalArgumentException, ще бъде хвърлено null;
    • Проверете дали когато се предаде на конструктора null, хвърленото изключение ще съдържа съобщението „Коне не може да бъде нула.“;
    • Проверете дали при предаване на празен списък към конструктора ще бъде изхвърлено IllegalArgumentException;
    • Проверете дали при подаване на празен списък към конструктора, хвърленото изключение ще съдържа съобщението "Конете не могат да бъдат празни.";
  2. getHorses метод
    • Проверете дали методът връща списък, който съдържа същите обекти и в същия ред като списъка, който е предаден на конструктора. Когато създавате обект Хиподрума , предайте списък от 30 различни коня на конструктора;
  3. метод на преместване
    • Проверете дали методът извиква метода за преместване на всички коне. Когато създавате обект Хиподрум, предайте списък от 50 фалшиви коня на конструктора и използвайте verify.
  4. getWinner метод
    • Проверете дали методът връща коня с най-голямата стойност на разстоянието.

3. Основен клас

  1. основен метод
    • Проверете дали методът се изпълнява не повече от 22 секунди. За да направите това, използвайте анотацията за изчакване. След като напишете този тест, деактивирайте го (използвайте анотацията Disabled). Така няма да отнеме време за изпълнение на всички тестове и ако е необходимо, може да се стартира ръчно.

Какво трябва да се регистрира

1. Основен клас:

  1. След като създадете обекта на хиподрума, добавете запис като този към дневника:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. След показване на информация за победителите, добавете запис като този в дневника:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Клас Хиподрум:

  1. Ако null е предадено на конструктора, тогава преди да хвърлите изключението, добавете запис като този към дневника:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Ако празен списък е предаден на конструктора, тогава преди да хвърлите изключението, добавете запис като този към дневника:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. В края на конструктора добавете запис като този към дневника:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Клас кон:

  1. Ако null се предаде на конструктора instead of име, тогава преди да хвърлите изключението, добавете запис в дневника като:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Ако името, предадено на конструктора, е празно, тогава преди да хвърлите изключението, добавете запис като този в дневника:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Ако скоростта, предадена на конструктора, е по-малка от нула, тогава преди да хвърлите изключението, добавете запис като този към дневника:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Ако разстоянието, предадено на конструктора, е по-малко от нула, тогава преди да хвърлите изключението, добавете запис като този към дневника:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. В края на конструктора добавете запис като този към дневника:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Дневниците трябва да се записват във file hippodrome.log , който трябва да се намира в корена на проекта в папката с регистрационни файлове . Всеки ден файлът трябва да се преименува според модела hippodrome.2021-12-31.log и instead of това трябва да се създава нов hippodrome.log . За да направите това, използвайте RollingFile appender . В този случай файловете, по-стари от 7 дни, трябва да бъдат изтрити. За да направите това, можете да използвате конструкция като:

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

Търсих в гугъл Howво да заменя instead of три точки.😊


Анализ на проекта . Гледайте след завършване!

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари