JUnit part II

Стаття з групи Random UA
учасників
продовження початок тут -> JUnit part I
JUnit part II - 1
Ще хочу вам показати, як працює метод 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");
        }
    }
}
У тестах ми проходимо за списком доданих користувачів, і дивимося чи не допустимі дані. Запускаємо тести оптом, і бачимо таку картину... JUnit part II - 2 Тут видно, наші тести для конструктора зламалися, а так само зачепило ще пару тестів. Тепер нам потрібно змінити конструктор, щоб він не додавав до списку користувачів, користувача з неприпустимими параметрами, зробимо це так:
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 part II - 3 Підіб'ємо підсумок, JUnit відмінний інструмент для покриття свого коду тестами. JUnit спрацює ще краще, у зв'язці з Maven , при складанні проекту, Maven обов'язково проведе всі тести, і потім збере наш готовий проект, але якщо тести будуть провалені, проект не буде зібраний, і ми знатимемо причини, і так буде легше розібратися де саме поломка. Другий плюс JUnit це випадок Рефакторингу , тести JUnitдопоможуть нам простежити, щоб логіка нашої програми не зламалася. А у великих проектах без системи автоматичного тестування життя не можливе, хоча може і можливе, але рухатися ваш проект буде зі швидкістю черепахи… або як то так… JUnit part II - 4 Якщо ми добре покриємо тестами наш код, то можемо бути впевнені, що у нашого клієнта, наш товар буде добре працювати. P/S Висловлюю величезну подяку Сергєєву Віктору! Ось посилання на відео урок, в якому він навчав нас: Дякую за увагу!!! Гарного вам настрою!!! І нехай спаси вас Бог від індускоду! ...ще якщо у кого буде інтерес покапатися у вихідному коді для статті... стукайтеся... з поділюсь тут початок — JUnit part I
Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.