Как правильно создать экземпляр объекта из класса, который вы тестируете в JUnit 5 в хуке before? - PullRequest
0 голосов
/ 04 июля 2018
@Before
public void setUp() {
    Airport airport = new Airport();
}
@Test
public void has_storage(){
    ArrayList<String> airport_storage;
    airport_storage = new ArrayList<String>();
    airport_storage.add("plane");
    ArrayList<String> actual_storage = airport.storage();

Я пытаюсь проверить свой класс в аэропорту с помощью класса AirportTest. Подобно RSpec / Jasmine и нескольким другим инфраструктурам тестирования, которые я использовал, я хочу убедиться, что для каждого теста я получаю новый экземпляр объекта. Хотя я читал, что переменные экземпляра в JUnit в любом случае не сохранятся во всех тестах, поэтому в этом нет необходимости. Почему я получаю сообщение об ошибке, что компилятор не может разрешить символ аэропорта? Как правильно объявить и инициализировать экземпляр аэропорта, чтобы он входил в область действия каждого @Test?

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Переменная airport известна только внутри блока setUp. Как говорится в ошибке, она не знает, о какой переменной вы говорите.

Чтобы исправить это, вам нужно объявить airport на уровне класса как переменную-член:

public class MyTest{
     private Airport airport; // declare as a private class member

     @Before
     public void setUp() {
         airport = new Airport(); // instantiate it before every test
     }

     @Test
     public void has_storage(){
         ArrayList<String> airport_storage;
         airport_storage = new ArrayList<String>();
         airport_storage.add("plane");
         ArrayList<String> actual_storage = airport.storage(); // use it without problems
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...