Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133

Как протестировать выбрасывание исключения в JUnit ?

02.04.2019, 21:48. Показов 3499. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот на примере функции water(), как можно протестировать это исключение?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import Object.Food;
import Object.Veget;
import javafx.scene.control.Alert;
 
import java.util.ArrayList;
 
public class Farmer extends Human {
 
    private int planted;
    private int watered;
    private ArrayList<Veget> vegetable = new ArrayList<Veget>();
 
    public int getVegetSize() {
        return vegetable.size();
    }
 
    public int getPlanted() {
        return planted;
    }
 
    public int getWatered() {
        return watered;
    }
 
    public Farmer () {
        super();
        planted = 0;
        watered = 0;
    }
 
    public Farmer (String name) {
        super (name);
        planted = 0;
        watered = 0;
    }
 
    public void plant() {
        planted++;
    }
 
    public void water() {
        if (planted <= 0) {
            throw new IllegalArgumentException("с начало нужно посадить растение");
        }
        else {
            planted--;
            watered++;
        }
    }
 
    public void collect () {
        if (watered <= 0) {
            throw new IllegalArgumentException("растения необходимо поливать");
        }
        else{
            watered--;
            Veget veget = new Veget();
            veget.setRandVeget();
            veget.setName("Enums.Vegetable");
            vegetable.add(veget);
        }
    }
 
    public Veget getLast() {
        return vegetable.get(vegetable.size()-1);
    }
 
    public void deleteVeget() {
        vegetable.remove(vegetable.size()-1);
    }
 
    public void eat(ArrayList<Food> foodList) {
        Food f = foodList.get (foodList.size()-1);
        foodList.remove(foodList.size()-1);
        Alert alert = new Alert (Alert.AlertType.INFORMATION);
        alert.setTitle ("Вкуснота-то какая!");
        alert.setHeaderText(null);
        alert.setContentText("Кажется, вкус этого блюда: " + f.tasteToString().toLowerCase()+"\n"+
                "Цвет блюда: " + f.getVeget().colorToString().toLowerCase()+"\n"+
                "Его можно сделать вкуснее");
        alert.showAndWait();
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2019, 21:48
Ответы с готовыми решениями:

JUnit test предполагающий выбрасывание исключений
Нужно специально передать в тест неверные параметры(пустая строка или null) и ожидать вылета исключений. А часть кода которая чуть ниже -...

Как протестировать функцию в JUnit ?
нужно протестировать функцию String coding() в JUnit: - убедится в том, что функция не возвращает null. - и что она возвращает...

Как протестировать метод в Junit ?
а именно метод coding() public class Proger extends Human { private static final int RAND_SIZE = 150; private final int...

13
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
02.04.2019, 22:02
danila-2000,
Java
1
    @Test (expected = IllegalArgumentException.class)
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
02.04.2019, 22:08  [ТС]
Java
1
2
3
4
@Test (expected = IllegalArgumentException.class)
public void water () {
    // тут должна быть логика теста 
}
подскажите что писать в логике теста ?
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
02.04.2019, 22:13
или так:
Java
1
assertThrows(IllegalArgumentException.class, () -> farmer.water());
но здесь по смыслу больше подходит IllegalStateException

Добавлено через 1 минуту
Цитата Сообщение от danila-2000 Посмотреть сообщение
подскажите что писать в логике теста ?
вызвать water() без вызова plant(). Должно быть исключение.
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
02.04.2019, 22:19  [ТС]
тут ошибочка выскакивает, пишет: cannot resolve symbol "farmer"
Миниатюры
Как протестировать выбрасывание исключения в JUnit ?  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.04.2019, 22:26
Цитата Сообщение от danila-2000 Посмотреть сообщение
ошибочка выскакивает
Объект кто создавать будет? Напиши new Farmer().water()
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
02.04.2019, 22:29  [ТС]
окей, а как пофиксить water ?
Миниатюры
Как протестировать выбрасывание исключения в JUnit ?  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.04.2019, 22:31
danila-2000, твоюждивизию... NEW Farmer()
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
02.04.2019, 22:41  [ТС]
да, что -то я не то написал, вот теперь вроде так
Миниатюры
Как протестировать выбрасывание исключения в JUnit ?  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.04.2019, 22:54

Я надеюсь, у тебя восьмая джава стоит?
Вот мануал со скриншотами
1
03.04.2019, 05:45

Не по теме:

danila-2000, ну не твое это! не проще преподу шампанского принести или там еще чего? зачем мучаться?

0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 06:07
Java
1
2
3
4
@Test
    public void whenCheckWaterThrowException() throws Exception {
        assertThat(IllegalArgumentException.class, is(new Farmer().water));
    }
1
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
03.04.2019, 14:44  [ТС]
Вот
Миниатюры
Как протестировать выбрасывание исключения в JUnit ?  
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 16:16
Лучший ответ Сообщение было отмечено danila-2000 как решение

Решение

danila-2000, так сделай импорт этого пакета

Добавлено через 1 минуту
Java
1
2
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2019, 16:16
Помогаю со студенческими работами здесь

JUnit протестировать деление
Добрый день, необходимо протестировать деление, но вот затрудняюсь какой метод нужно протестировать, есть калькулятор, кнопка равно,...

Протестировать метод в JUnit на добавление элемента в список
* Метод &quot;готовки&quot; Повара, добавляет новый объект типа &quot;Еда&quot; в общий список * @param foodArrayList список еды * @param...

Содать класс, бросающий исключения и протестировать его в контролируемом блоке
Написать класс Ex, хранящий вещественное число x и имеющий конструктор по вещественному числу, инициализирующий x значением параметра....

Выбрасывание пользователя в офлайн
Всем привет. Проблема такова, когда пользователь заходит в свою учетную запись, в таблицу бд вносится в поле &quot;online&quot; = 1, если...

Выбрасывание повторно встречающихся чисел
Недавно начал изучать язык и нужно мне решить задачу, попытки не увенчались успехом. Кто может и не затруднится покажите как можно сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru