Тестовая программа для класса Date
Я написал класс Date, который добавляет / вычитает дни / месяцы / годы с учетом високосных лет. Теперь мне нужно написать тестовую программу с жестко закодированными данными, чтобы проверить мою реализацию. Самым простым способом было бы создать "контрольную" дату, а затем создать цикл, который переносит ее на один день вперед, скажем, на 3 года (включая високосный год), а затем распечатывает контрольную дату вместе с некоторыми другими даты построены относительно этого. У меня нет большого опыта Java, поэтому мне интересно, как бы я на самом деле это сделал?
2 ответа
Вам не нужно проверять все эти случаи. Подумайте о тестировании, представляющем набор.
то есть не имеет смысла проверять определенную дату и день после, поскольку внутренне будет вести себя точно так же (если мы не говорим о феврале, у которого есть дополнительный день каждые четыре года).
Попробуйте разработать один тест для каждого случая. Я бы, например, проверил случайную дату, месяц с 31 днем, другую с 30, февраль как особый случай, что произойдет, если null
передается в функцию.
Таким образом, если что-то пойдет не так, вы легко поймете, что происходит.
Цикл по датам, добавив 1 день будет работать, но, на мой взгляд, это сложно. Достаточно иметь несколько примеров:
(псевдокод) для високосного года
// assuming 1996-02-28 is a leap year which i have not verified
MyDate feb28th = createDate("1996-02-28");
feb28th.addDays(1);
AssertEquals("1996-02-29", feb28th.toString());
(псевдокод) для не високосного года
MyDate feb28th = createDate("1997-02-28");
feb28th.addDays(1);
AssertEquals("1997-03-01", feb28th.toString());
может быть, вам также нужен один тест для каждого особого случая, как
- "не каждые 400 лет"