Этот тест 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;
}
}
Вам необходимо аннотировать метод setup
иначе он не будет запущен. Я не очень хорошо знаком с JUnit, но я подозреваю, что @BeforeClass
или @Before
будут делать то, что вы ожидаете.
Используйте аннотацию @Before
если вы хотите, чтобы ваш метод установки выполнялся перед каждым тестированием (любой метод, аннотированный с помощью @Test
), используйте аннотацию @BeforeClass
если вы хотите, чтобы ваш метод установки запускался один раз и только один раз.
Вы должны аннотировать setUp
метод с @Before
. Это не выполняется.