Форум программистов, компьютерный форум, киберфорум
JavaFX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.12.2021
Сообщений: 17

Тестирование для JavaFX

06.12.2021, 17:42. Показов 1699. Ответов 1

Студворк — интернет-сервис помощи студентам
Здраствуйте, есть Java класс, для него нужно составить тест с помощью JUnit5, можете мне объяснить от чего отталкиваться, что взять за основу и привести небольшой пример. Заранее благодарю.

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
package com.example.arina;
 
import com.example.arina.animation.Shake;
import com.example.arina.db.DBHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
 
import java.io.IOException;
import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
 
public class HelloController {
 
    @FXML
    protected void onHelloButtonClick() {
        welcomeText.setText("Введите в поля (Логин, пароль) Ваши данные \nили создайте новый аккаунт нажав \nна кнопку - Зарегистрироваться");
    }
 
    @FXML
    private ResourceBundle resources;
 
    @FXML
    private URL location;
 
    @FXML
    private Button go;
 
    @FXML
    private Label idHellowText;
 
    @FXML
    private TextField login;
 
    @FXML
    private TextField password;
 
    @FXML
    private Button registration;
 
    @FXML
    private TextField role;
 
    @FXML
    private Label welcomeText;
 
    @FXML
    void initialize() {
 
        assert go != null : "fx:id=\"go\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert idHellowText != null : "fx:id=\"idHellowText\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert login != null : "fx:id=\"login\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert password != null : "fx:id=\"password\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert registration != null : "fx:id=\"registration\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert role != null : "fx:id=\"role\" was not injected: check your FXML file 'hello-view.fxml'.";
        assert welcomeText != null : "fx:id=\"welcomeText\" was not injected: check your FXML file 'hello-view.fxml'.";
 
        /*
        * go - обращение к id кнопки.
        * setOnAction() - метод setOnAction класса Button, определяет что произойдет если пользователь нажмет на кнопку.
        * Событие Event - это объект, описывающий изменение состояния источника, с которым оно связано.
        * Примером события, в котором участвует пользователь, являются нажатие кнопки,
        * выбор элемента из списка, ввод символа с клавиатуры и т.д.
        *
        * GetText() - получение фрагмента текста, заданный начальной позицией и длиной.
        * trim() - удаление лишних пробелов при записи (В конце или начале).
        * */
 
        go.setOnAction(event -> {
            String logintext = login.getText().trim();
            String loginpassword = password.getText().trim();
            String loginrole = role.getText().trim();
 
 
            if (!logintext.equals("") && !loginpassword.equals("") && !loginrole.equals(""))
                loginUser (logintext, loginpassword, loginrole); // Если логин и пароль не равны пустоте, то будем вызывать метод loginUser
            else System.out.println("Ошибка, заполните данные"); // Иначе вывести ошибку
        });
 
        /* registration - обращение к id кнопки.
        *  setOnAction() - метод setOnAction класса Button, определяет что произойдет если пользователь нажмет на кнопку.
        * Событие Event - это объект, описывающий изменение состояния источника, с которым оно связано.
        * Примером события, в котором участвует пользователь, являются нажатие кнопки,
        * выбор элемента из списка, ввод символа с клавиатуры и т.д.
        *
        * GetScene() - возвращает выбранный (активный) объект Scene окна
        * GetWindow() - возвращает дескриптор окна, связанного с данным активного окном
        * hide() - cкрывает выбранное (активное) окно
        * */
 
        registration.setOnAction(event -> {
            openNewScene("/com/example/arina/RegistrationWindow.fxml");
        });
    }
    private void loginUser(String logintext, String loginpassword, String loginrole) {
        DBHandler dbHandler = new DBHandler();
        User user = new User();
        user.setName(logintext);
        user.setPassword(loginpassword);
        user.setRole(loginrole);
        ResultSet result= dbHandler.getUser(user);
 
//        int counter = 0;
//        while (true){
//            try {
//                if (!result.next()) break;
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//            counter++;
//        }
 
        System.out.println("Ваш логин - " + logintext);
        System.out.println("Ваш пароль - " + loginpassword);
        System.out.println("Ваша роль - " + loginrole);
 
        if (loginrole.equals("admin")){
            System.out.println("Такие данные найдены! (Администратор)");
            openNewScene("/com/example/arina/RegistrationWindow.fxml");
 
 
        }
        else if(loginrole.equals("user")){
            System.out.println("Такие данные найдены! (Пользователь)");
            openNewScene("/com/example/arina/ViewingProducts.fxml");
 
        }
 
        else {Shake userLoginAnimation = new Shake(login);
            Shake userPasswordAnimation = new Shake(password);
            Shake userRoleAnimation = new Shake(role);
            userLoginAnimation.playAnimation();
            userPasswordAnimation.playAnimation();
            userRoleAnimation.playAnimation();
 
            System.out.println("Такие данные не найдены!");}
    }
    public void openNewScene(String window){
        registration.getScene().getWindow().hide();
 
        /*
         * Метод FXMLLoader.load() возвращает объект типа Parent,
         * который мы можем передать в конструктор объекта Scene,
         * и таким образом, наше приложение получит интерфейс из fxml
         *
         * Оператор new в языке Java всегда создает новый объект
         * и возвращает ссылку на этот объект,
         * так же выделяет память
         *
         * Командлет Set-Location присваивает рабочему местоположению заданное значение.
         * Местоположение может быть каталогом, вложенным каталогом,
         * местоположением в реестре или другим стеком каталогов
         * */
 
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource(window));
 
        /*
         * Оператор try определяет блок кода, который во время выполнения будет проверяться
         * на возникновение ошибок.
         * Оператор catch определяет блок кода, который будет выполняться, если
         * в блоке оператора try возникнет ошибка.
         *
         * IOException – Это исключение обычно означает, что что-то в сети, файловой системе или базе данных не удалось.
         *
         * PrintStackTrace - это метод класса Throwable.
         * Этот метод отображает сообщение об ошибке в консоли, где мы получаем исключение в исходном коде.
         * */
 
        try {
            loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        /*
         * Это основной объект модели представления в корневом контексте,
         * т.e. Самый верхний родительский контекст.
         * Обычно это объект, который был передан.
         *
         * GetRoot() — возвращает «корневую» директорию; то есть ту, которая находится на вершине дерева каталогов.
         *
         * Stage — по сути это окружающее окно, которое используется как начальное полотно и содержит в себе остальные компоненты.
         *
         * setScene() - передача той сцены, которую в конечном итоге нужно загрузить
         *
         * showAndWait() - показать и подождать, пока сцена не отобразится
         * */
 
        Parent root = loader.getRoot();
        Stage stage = new Stage();
        stage.setScene(new Scene(root));
        stage.show();
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2021, 17:42
Ответы с готовыми решениями:

JavaFX. Самое первое задание в JavaFX вместо Java. Не используя вспомогательных объектов
Всем привет, уважаемые форумчане! Мы работали на программировании в вузе на Java. Теперь дали задание сделать работу не в Java, а уже в...

Проект JavaFX в Eclipse не видит библиотеки из javafx-sdk
Доброго всем времни суток. Помогите решить вот такую проблемку. Установил среду Eclipse. В ней установил через Marketplace...

JavaFX ругается (package javafx.fxml does not exist)
Error:(3, 19) java: package javafx.fxml does not exist Error:(4, 28) java: package javafx.scene.control does not exist Error:(5, 28)...

1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.12.2021, 18:20
Java
1
2
3
4
5
6
7
8
9
10
11
class Adder {
  public long add(int a, int b);
}
 
class AdderTest {
  private Adder adder = new Adder();
  @Test
  public void addGivenTwoNumbersShouldReturnTheirSum() {
    assertThat(adder.add(2,3)).isEqualTo(5);
  }
}
Добавлено через 29 секунд
От функционала отталкивайся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2021, 18:20
Помогаю со студенческими работами здесь

Swing --> JavaFX, Переписать графический компонент в JavaFX
Всем привет! Только начал изучать Java. Пишу программу крестики-нолики(игра). Написал графический компонент ячейка в Swing (9...

Визуальный редактор для JavaFX
Приветствую! Сабж: существуют ли визуальные WYSIWYG редакторы для построения GUI на JavaFX? Пользуюсь Eclipse и Intellij-IDEA 12....

Морда на JavaFX для PostgreSQL
Добрый день, уважаемые коллеги :senor: Не так давно изучаю Java. Опыта нет на этом языке. Прошу совета. Хочу сделать базу в...

Среда программирования для JavaFX
Какую среду программирования поддерживают программирование JavaFX-проектов? Какйю из них вы бы посоветовали? Нужна любая информация.. ...

IDE для удобной работы с JavaFX
Подскажите удобную IDEю для работы с JavaFX - чтобы был встроенный тул типа набросать фрейм. Ничего нормального не нашел. JavaFX Scene...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru