Junit @Before不能正常工作

use*_*235 2 java junit

@Before
public void setup(){
    Ground ground = new Ground(100, 100);
}

@Test
public void getDimX(){
    String msg = "For a newly created Ground(100, 100), ground.getDimensionX()      should return 100";
    assertEquals(100, ground.getDimensionX());
}
Run Code Online (Sandbox Code Playgroud)

上面的代码返回一个NullPointerException.如果我移动Ground ground = new Ground(4, 4);getDimX()方法,测试运行良好.我有许多测试将使用相同的基础,所以我宁愿不为每个测试用例创建一个新测试.此外,如果我@Begin完全摆脱该块,只是离开地面实例,它也可以正常工作.那么重点是什么呢?@Before?

小智 9

当我导入 org.junit.jupiter.api.Test 而不是 org.junit.Test 时,我遇到了这个问题

  • 请有人给这个人一个奖杯!您使我免于花费数小时无意识地扫描两个不同测试类之间的导入。谢谢 ! (4认同)

C.B*_*.B. 5

在测试设置之外的测试类中创建了一个私有字段,即

public class MyTest{
    private Ground ground;
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在你的实例中实例化 before()

@Before
public void before(){ground = new Ground(100,100);}
Run Code Online (Sandbox Code Playgroud)