JUnit设置未创建对象

ewm0tg9j  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(130)

为什么在尝试运行测试时得到testManuscriptNullPointerExeption
这是我的Manuscript.java:

package org.lhoffjann;

public class Manuscript {
private String msID;
private String path;
    public void setMSid(String msID){
        this.msID = msID;
    }

    public String getMSid() {
        return this.msID;
    }
}

这是我的ManuscriptTest.java:

package org.lhoffjann;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class ManuscriptTest {
    private static Manuscript testManuscript;

    @Before
    public void setUp(){
        testManuscript = new Manuscript();
    }
    @Test
    public void testGetMSid() {
        testManuscript.setMSid("1234");
        assertTrue("1234" == testManuscript.getMSid());
    }
}
rm5edbpk

rm5edbpk1#

您已经从JUnit 5导入了@Test,而您正在使用JUnit 4中的@Before,这种组合不起作用。您需要选择要使用的JUnit版本,4或5,然后一致地从该JUnit版本导入类。我建议使用JUnit 5,并从类路径中删除所有JUnit 4依赖项。或者至少将IDE配置为不建议这些导入。
对于此特定情况,请将@Beforeorg.junit.Before)替换为@BeforeEachorg.junit.jupiter.api.BeforeEach)。
在所示的例子中,你甚至不需要这个setUp方法,因为每个测试执行都有它自己的测试类示例用途:

private Manuscript testManuscript = new Manuscript();

也就是说,移除static,直接初始化字段,然后移除setUp方法。
即使您继续使用setUp方法,我也建议删除static,因此testManuscript是一个示例字段,就像实际使用的一样。

chhkpiq4

chhkpiq42#

您混合了Junit4和Junit5。您应该只使用一个版本。
6月4日或

package org.lhoffjann;

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

import org.junit.Assert;

public class ManuscriptTest {
    private static Manuscript testManuscript;

    @Before
    public void setUp(){
        testManuscript = new Manuscript();
    }

    @Test
    public void testGetMSid() {
        testManuscript.setMSid("1234");
       Assert.assertEquals("1234",testManuscript.getMSid());
    }


六月五日

package org.lhoffjann;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class ManuscriptTest {
    private static Manuscript testManuscript;

    @BeforeEach
    public void setUp() {
        testManuscript = new Manuscript();
    }

    @Test
    void testGetMSid() {
        testManuscript.setMSid("1234");
        Assertions.assertEquals("1234", testManuscript.getMSid());
    }
}

相关问题