safe1 не может быть решен (JUnit)

1

Только что начал с JUnit, но я не могу помочь этой ошибке, здесь фрагмент кода:

package ss.week2.test;

import static org.junit.Assert.*;
import ss.week2.hotel.Safe;

import org.junit.Before;
import org.junit.Test;

public class SafeTest {

@Before
public void setUp() {
    Safe safe1 = new Safe();
    Safe safe2 = new Safe();
    safe2.activate("Initial");
}

@Test
public void testSetToActiveWrong() {
    System.out.println("Testing setting to active with wrong password: ");
    assertEquals("safe1.activate(\"wrongwrong\")", true, safe1.activate("wrongwrong"));
    assertEquals("safe2.activate(\"wrongwrong\")", false, safe2.activate("wrongwrong"));
}

// Some other tests

public void runTests() {
    setUp();
    testSetToActiveWrong();
    setUp();
    testOpenWrong();
    setUp();
    testOpenRight();
    setUp();
    testDeactivate();
}

private void assertEquals(String text, boolean expected, boolean result) {
        System.out.println("        " + text);
        System.out.println("            Expected:  " + expected);
        System.out.println("            Result: " + result);
}

public static void main(String[] args) {
    System.out.println("Initial conditions: ");
    System.out.println("safe1 is closed and not active.");
    System.out.println("safe2 is closed but active.");
    new SafeTest().runTests();
}
}

вызов assertEquals дает мне ошибку: safe1 не может быть решена, почему это так? Я думаю, что я инициализировал переменную (без ошибок), я импортировал пакет и файл, в котором должен быть протестирован файл (обратите внимание: Safe.java находится в другом пакете).

Как это исправить?

  • 1
    Вы видите переменную safe1, определенную в методе или в классе, где она используется? Я не могу Методы не могут получить доступ к локальным переменным других методов.
  • 0
    Класс Junit - это класс, украшенный улитками. Применяются те же правила. Используйте поля для связи между методами.
Показать ещё 1 комментарий
Теги:
junit

1 ответ

3
Лучший ответ

safe1 объявляется локальной переменной в вашей функции setUp(). Если вы хотите, чтобы он был доступен из других методов, он должен быть объявлен как mem memler:

public class SafeTest {

    Safe safe1;
    Safe safe2;

    @Before
    public void setUp() {
        safe1 = new Safe();
        safe2 = new Safe();
        safe2.activate("Initial");
    }

    @Test
    public void testSetToActiveWrong() {
        System.out.println("Testing setting to active with wrong password: ");
        assertEquals("safe1.activate(\"wrongwrong\")", true, safe1.activate("wrongwrong"));
        assertEquals("safe2.activate(\"wrongwrong\")", false, safe2.activate("wrongwrong"));
    }

    // rest of class...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню