Я получаю исключения нулевого указателя на всех моих JUnits. в отладке - источник не найден

1

Этот тест JUnit (и другие) всегда терпит неудачу из-за исключения NullPointerException. Когда я отлаживаю, он возвращает ошибку "Источник не найден" в строке sq.setPlayers (игроки); Ниже приведен список методов класса и их зависимостей. Я не могу представить никаких причин, почему это не сработает.

public class SingleEliminationTest {

    private Queue queue;
    private Match currentMatch;
    private SingleElimination sq;


    public void setUp() {
        queue = new Queue(4);
        sq = new SingleElimination();
    }

    @Test
    public void setPlayers()
    {
        ArrayList<String> players = new ArrayList<String>();
        players.add("Max Atkins");
        players.add("Hannah Marlow");
        players.add("Liam Ross");
        players.add("Chandlar Bruce");
        sq.setPlayers(players);

        assertEquals("Not enough players", queue.length(), 4);
    }

public class SingleElimination implements IManager
{
    private Queue queue;
    private Match current;

    public SingleElimination()
    {
        queue = new Queue(5);
    }
    /**
     * Set the players or teams to use in the competition
     * @param players the players or teams
     */
    public void setPlayers(ArrayList<String> players)
    {
        for(String player : players)
        {
            queue.enQ(player);
        }
    }

public class Queue 
{
    Object[] queue;
    int head;
    int tail;
    int length;

    public Queue(int startSize)
    {
        queue = new Object[startSize];
        head = tail = length = 0;
    }

    // Adds an Object to the back of the queue. 
     public void enQ(Object o)
     {
         if(length == queue.length)
         {
             //queue = new Object[queue.length * 2];
         }
         queue[tail++] = o;
         length++;
         if(tail == queue.length)
         {
             tail = 0;
         }
     }
  • 0
    все ответы были хорошими, выбрали самый быстрый ответ
Теги:
junit
nullpointerexception

3 ответа

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

Вам необходимо аннотировать метод setup иначе он не будет запущен. Я не очень хорошо знаком с JUnit, но я подозреваю, что @BeforeClass или @Before будут делать то, что вы ожидаете.

  • 0
    ура :) это я идиот
1

Используйте аннотацию @Before если вы хотите, чтобы ваш метод установки выполнялся перед каждым тестированием (любой метод, аннотированный с помощью @Test), используйте аннотацию @BeforeClass если вы хотите, чтобы ваш метод установки запускался один раз и только один раз.

0

Вы должны аннотировать setUp метод с @Before. Это не выполняется.

Ещё вопросы

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