Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在所有JUnit上都会出现空指针异常。在调试中-找不到源_Java_Junit_Nullpointerexception - Fatal编程技术网

Java 我在所有JUnit上都会出现空指针异常。在调试中-找不到源

Java 我在所有JUnit上都会出现空指针异常。在调试中-找不到源,java,junit,nullpointerexception,Java,Junit,Nullpointerexception,这个JUnit测试(和其他测试)总是因为NullPointerException而失败。当我调试时,它在sq.setPlayers(players)行返回一个错误“sourcenotfound”; 下面是所使用的类方法及其依赖项的列表。我无法想象它为什么不起作用 public class SingleEliminationTest { private Queue queue; private Match currentMatch; private SingleElimi

这个JUnit测试(和其他测试)总是因为NullPointerException而失败。当我调试时,它在sq.setPlayers(players)行返回一个错误“sourcenotfound”; 下面是所使用的类方法及其依赖项的列表。我无法想象它为什么不起作用

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;
         }
     }
公共类单一淘汰测试{
专用队列;
私人配对;
私人单身人士;
公共作废设置(){
队列=新队列(4);
sq=新的单一消除();
}
@试验
公众游戏者()
{
ArrayList players=新的ArrayList();
玩家。添加(“Max Atkins”);
玩家。添加(“汉娜·马洛”);
玩家。添加(“利亚姆·罗斯”);
玩家。添加(“钱德拉布鲁斯”);
sq.setPlayers(players);
assertEquals(“没有足够的玩家”,queue.length(),4);
}
公共类实现了IManager
{
专用队列;
私有匹配电流;
公营机构()
{
队列=新队列(5);
}
/**
*设置比赛中使用的球员或球队
*@param玩家玩家或团队
*/
公共无效设置玩家(ArrayList玩家)
{
用于(弦乐演奏者:演奏者)
{
enQ(玩家);
}
}
公共类队列
{
对象[]队列;
int头;
内尾;
整数长度;
公共队列(int startSize)
{
队列=新对象[startSize];
头=尾=长度=0;
}
//将对象添加到队列的后面。
公共无效enQ(对象o)
{
if(长度==队列长度)
{
//queue=新对象[queue.length*2];
}
队列[tail++]=o;
长度++;
if(tail==queue.length)
{
尾=0;
}
}

您需要对
安装程序
方法进行注释,否则它将无法运行。我不太熟悉JUnit,但我怀疑
@BeforeClass
@Before
会达到您的预期效果。

您需要对
安装程序
方法进行注释,否则它将无法运行。我对JUnit不是很熟悉,但我怀疑
@上课前
@Before
会做你想做的事。

你需要在
之前用
@注释你的
设置
方法。它没有运行。

你需要在
之前用
@注释你的
设置
方法。它没有运行。

如果你想让你的设置运行,请使用
/code>注释方法在每次测试之前运行(任何带有
@test
注释的方法),如果希望安装方法在每次测试之前运行一次且仅运行一次,请使用
@BeforeClass
注释(任何带有
@Test
注释的方法),如果您想让安装方法运行一次且仅运行一次,请使用
@BeforeClass
注释

所有答案都是好的,选择最快的答案所有答案都是好的,选择最快的答案