Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789

@BeforeAll и @AfterAll в Junit 5 (nullPointerException)

23.08.2018, 15:12. Показов 1932. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке в таком методе определить создание экземпляра тестируемого класса, ошибок нет, но при запуске теста получаю NullPointerException.
Почему?

Тогда как писать методы с аннотацией @AfterAll , например, закрытие connection , то же не будет работать в них ?

Кликните здесь для просмотра всего текста
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
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
 
import java.io.IOException;
 
import static org.junit.jupiter.api.Assertions.*;
 
class CalcTest {
 
    private Calc calc;
 
    @BeforeAll
    public Calc getInstance(){
       Calc calc = new Calc();
       return calc;
    }
 
    @Test
    void addObjects() {
 
        Integer result = calc.addObjects(4,6);
        Integer expected = 10;
        assertEquals( result, expected, "Результат не верный!!!");
}
 
    @Test
    void add() {
 
        int result = calc.add(2,5); /* должно быть 7 (2 + 5)*/
        int expected = 7;
 
        assertEquals( result, expected, "Результат не верный!!!");
 
    }
 
 
 
    @Test
    void divException() {
 
        Throwable thrown = assertThrows(ArithmeticException.class, () -> {
            double expected  = calc.div(10,0);
        });
        assertNotNull(thrown.getMessage());
 
     }
 
 
    @Test
    void divOk() {
        double expected = calc.div(10,2);
        double actual = 5;
 
        assertEquals(expected, actual, "Получен неправильный результат");
    }
 
}




Кликните здесь для просмотра всего текста
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
public class Calc {
 
    private Integer one;
    private Integer two ;
 
    public Integer getOne() {
        return one;
    }
 
    public Integer getTwo() {
        return two;
    }
 
    public void setOne(Integer one) {
        this.one = one;
    }
 
    public void setTwo(Integer two) {
        this.two = two;
    }
 
    public Integer addObjects(Integer one, Integer two){
        return one + two;
    }
 
    public int add (int a, int b){
        return a + b;
    }
 
 
    public double div (int a, int b){
        return a/b;
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
 
        Calc calc = (Calc) o;
 
        if (one != null ? !one.equals(calc.one) : calc.one != null) return false;
        return two != null ? two.equals(calc.two) : calc.two == null;
    }
 
    @Override
    public int hashCode() {
        int result = one != null ? one.hashCode() : 0;
        result = 31 * result + (two != null ? two.hashCode() : 0);
        return result;
    }
}


Добавлено через 58 секунд
тесты начал изучать поэтому ничего не знаю...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2018, 15:12
Ответы с готовыми решениями:

Junit тест NullPointerException
Подскажите, пожалуйста, как кинуть эксепшн с месседжем до того, как эксепшн появится сам во время рассчетов? И проверить сходятся ли...

JUnit
Помогите протестировать исключения public static String readLines(String file) { StringBuilder res = new StringBuilder(); ...

Junit+spring
Здравствуйте. Подскажите пожалуйста. Пытаюсь протестировать метод. Кидает такую ошибку. java.lang.IllegalStateException: Failed to load...

4
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
23.08.2018, 15:17  [ТС]
вот для информации
Миниатюры
@BeforeAll и @AfterAll в Junit 5 (nullPointerException)  
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
23.08.2018, 16:55
masli, а ничего что переменная в строке 11 и 15 это разные переменные?
решение - в строке 15 удалить слово Calc, чтобы стало calc = new Calc(); = то есть юзаем приватную переменную тестового класса. Так это и делают и так закрывают потом коннекты.

Добавлено через 2 минуты
я в основном на тестНГ специализируюсь, но разве не должно быть просто
Java
1
2
3
4
@BeforeAll
    public void setUp(){
       calc = new Calc();
    }
1
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
23.08.2018, 20:37  [ТС]
Вот так не получится.
Метод должен быть статический (ошибку вообще верно указали)

Но даже исправив вот так

Кликните здесь для просмотра всего текста
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
import org.junit.jupiter.api.*;
 
import java.io.IOException;
import java.lang.annotation.Annotation;
 
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeAll;
 
class CalcTest {
 
    private Calc calc;
 
    @BeforeAll
    public  void getInstance(){
      calc = new Calc();
    }
 
 
    @Test
    void addObjects() {
   //  Calc calc = new Calc();
        Integer result = calc.addObjects(4,6);
        Integer expected = 10;
        assertEquals( result, expected, "Результат не верный!!!");
     }
 
    @Test
    void add() {
        //Calc calc = new Calc();
        int result = calc.add(2,5); /* должно быть 7 (2 + 5)*/
        int expected = 7;
 
        assertEquals( result, expected, "Результат не верный!!!");
 
    }
 
 
 
    @Test
    void divException() {
       // final Calc calc = new Calc();
        Throwable thrown = assertThrows(ArithmeticException.class, () -> {
            double expected  = calc.div(10,0);
        });
        assertNotNull(thrown.getMessage());
 
     }
 
 
    @Test
    void divOk() {
       // Calc calc = new Calc();
        double expected = calc.div(10,2);
        double actual = 5;
 
        assertEquals(expected, actual, "Получен неправильный результат");
    }
 
 
}


Получаю вот такое сообщение

Java
1
2
3
4
org.junit.platform.commons.JUnitException: @BeforeAll method 'public void CalcTest.getInstance()' must be static.
    at org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.assertStatic(LifecycleMethodUtils.java:66)
    at org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.lambda$findBeforeAllMethods$0(LifecycleMethodUtils.java:42)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
Но вот верное решение

Кликните здесь для просмотра всего текста
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
import org.junit.jupiter.api.*;
 
import java.io.IOException;
import java.lang.annotation.Annotation;
 
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeAll;
 
class CalcTest {
 
    private static Calc calc;
 
    @BeforeAll
    public static void getInstance(){
      calc = new Calc();
    }
 
 
    @Test
    void addObjects() {
   //  Calc calc = new Calc();
        Integer result = calc.addObjects(4,6);
        Integer expected = 11;
        assertEquals( result, expected, "Результат не верный!!!");
     }
 
    @Test
    void add() {
        //Calc calc = new Calc();
        int result = calc.add(2,5); /* должно быть 7 (2 + 5)*/
        int expected = 7;
 
        assertEquals( result, expected, "Результат не верный!!!");
 
    }
 
 
 
    @Test
    void divException() {
       // final Calc calc = new Calc();
        Throwable thrown = assertThrows(ArithmeticException.class, () -> {
            double expected  = calc.div(10,2);
        });
        assertNotNull(thrown.getMessage());
 
     }
 
 
    @Test
    void divOk() {
       // Calc calc = new Calc();
        double expected = calc.div(10,2);
        double actual = 5;
 
        assertEquals(expected, actual, "Получен неправильный результат");
    }
 
 
}


Поле нужно сделать статическим.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
24.08.2018, 05:57
Цитата Сообщение от masli Посмотреть сообщение
Но вот верное решение
ах да, жЮнит для каждого теста создает отдельный объект, потому нужен статик (в тестНГ такого нет)
и кстати метод все же переименуй, getInstance() уже не подходит ибо нет самого гет, метод то войд. И вообще в тестировании принято называть setUp для начала и tearDown для конца
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2018, 05:57
Помогаю со студенческими работами здесь

Timeout JUnit
Как в JUnit задать timeout менее одной миллисекунды? @Test(timeout=1) Работает - одна миллисекунда. Два следующих варианта не...

тестирование с JUnit
Откуда вот такая ошибка??: .E Time: 0 There was 1 error: 1) testAge(TestClass) at Main.main(Main.java:7) FAILURES!!! Tests...

JUnit тесты
Мне нужно сделать тесты к проекту, собранному в Maven. Не понимаю, как создать тест. У меня в программе реализуется модуль .jar, который...

JUnit тесты
Доброго времени суток, знатоки. :) Написал незамысловатый код по заданию, заказчик просит юнит тесты. Вот код: public class...

Junit 4 и другое
1. Что для начала надо почитать для создания тестов? 2. Если метод только принимает значение но ничего не возвращает как его тестировать?...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Реалии.
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Реалии.
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru