为什么我在尝试运行测试时会得到“ NullPointerExeptionfor” ?testManuscript
这是我的 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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 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());
}
}
Run Code Online (Sandbox Code Playgroud)
您已从 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方法,因为每个测试执行都会获取自己的测试类实例。您可以使用:
private Manuscript testManuscript = new Manuscript();
Run Code Online (Sandbox Code Playgroud)
即remove static,直接初始化字段,removesetUp方法。
即使您继续使用该setUp方法,我建议删除static,testManuscript实例字段也是如此,就像实际使用的一样。
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |