продовження початок тут -> JUnit part I
Ще хочу вам показати, як працює метод
Assert.fail(String)
– якщо буде викликаний цей метод, тест буде провалено. Зручно, якщо інші методи класу Assert
не можуть зробити нам перевірку. Допустимо нам потрібно заборонити приймати new String(“”)
. Спробуємо це зробити на конструкторі заборонимо передавати name = “” || null, age = 0; Sex = null
. Поїхали … Я додав додаткові поля для тестування
private User user;
private User user1;
private User user2;
private User userNotAdd;
private User userNotAdd1;
та змінив методsetUp()
@Before
public void setUp() throws Exception {
user = new User("Євген", 35, Sex.MALE);
user1 = new User("Марина", 34, Sex.FEMALE);
user2 = new User("Аліна", 7, Sex.FEMALE);
userNotAdd = new User("", 0, null);
userNotAdd1 = new User(null, 0, null);
}
і додав три методи тесту
@Test
public void newUser_EMPTY_NAME() {
for (User user : User.getAllUsers()){
if (user.getName() != null && user.getName().isEmpty()) {
Assert.fail("Попытка создания пользователя с пустым именем");
}
}
}
@Test
public void newUser_AGE_ZERO() {
for (User user : User.getAllUsers()) {
if (user.getAge() <= 0) {
Assert.fail("Попытка создания пользователя c не допустимым возрастом");
}
}
}
@Test
public void newUser_SEX_NO_NULL() {
for (User user : User.getAllUsers()) {
if (user.getSex() == null) {
Assert.fail("Попытка создания пользователя с указанием пола = null");
}
}
}
У тестах ми проходимо за списком доданих користувачів, і дивимося чи не допустимі дані. Запускаємо тести оптом, і бачимо таку картину... Тут видно, наші тести для конструктора зламалися, а так само зачепило ще пару тестів. Тепер нам потрібно змінити конструктор, щоб він не додавав до списку користувачів, користувача з неприпустимими параметрами, зробимо це так:
public User(String name, int age, Sex sex) {
if (name != null && !name.isEmpty() && age > 0 && sex != null){
this.name = name;
this.age = age;
this.sex = sex;
if (!hasUser()) {
countId++;
this.id = countId;
allUsers.put(id, this);
}
}
}
Запускаємо наші тести і бачимо, що у нас все по красі Підіб'ємо підсумок, JUnit відмінний інструмент для покриття свого коду тестами. JUnit спрацює ще краще, у зв'язці з Maven , при складанні проекту, Maven обов'язково проведе всі тести, і потім збере наш готовий проект, але якщо тести будуть провалені, проект не буде зібраний, і ми знатимемо причини, і так буде легше розібратися де саме поломка. Другий плюс JUnit це випадок Рефакторингу , тести JUnitдопоможуть нам простежити, щоб логіка нашої програми не зламалася. А у великих проектах без системи автоматичного тестування життя не можливе, хоча може і можливе, але рухатися ваш проект буде зі швидкістю черепахи… або як то так… Якщо ми добре покриємо тестами наш код, то можемо бути впевнені, що у нашого клієнта, наш товар буде добре працювати. P/S Висловлюю величезну подяку Сергєєву Віктору! Ось посилання на відео урок, в якому він навчав нас:
Дякую за увагу!!! Гарного вам настрою!!! І нехай спаси вас Бог від індускоду! ...ще якщо у кого буде інтерес покапатися у вихідному коді для статті... стукайтеся... з поділюсь тут початок — JUnit part I