为什么在尝试运行测试时得到testManuscript
的NullPointerExeption
?
这是我的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());
}
}
2条答案
按热度按时间rm5edbpk1#
您已经从JUnit 5导入了
@Test
,而您正在使用JUnit 4中的@Before
,这种组合不起作用。您需要选择要使用的JUnit版本,4或5,然后一致地从该JUnit版本导入类。我建议使用JUnit 5,并从类路径中删除所有JUnit 4依赖项。或者至少将IDE配置为不建议这些导入。对于此特定情况,请将
@Before
(org.junit.Before
)替换为@BeforeEach
(org.junit.jupiter.api.BeforeEach
)。在所示的例子中,你甚至不需要这个
setUp
方法,因为每个测试执行都有它自己的测试类示例用途:也就是说,移除
static
,直接初始化字段,然后移除setUp
方法。即使您继续使用
setUp
方法,我也建议删除static
,因此testManuscript
是一个示例字段,就像实际使用的一样。chhkpiq42#
您混合了Junit4和Junit5。您应该只使用一个版本。
6月4日或
或
六月五日