Java JUnit测试不使用@Before注释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java JUnit测试不使用@Before注释相关的知识,希望对你有一定的参考价值。

谢谢,

从Java JUnit测试开始,并且遇到了关于@Before注释的问题。

我的设置:Java 9 Eclipse Oxygen JUnit 5

如果我像这样做我的测试

package junittesting;


import org.junit.jupiter.api.Test;
import de.hsa.games.fatsquirrel.space.XY;

public class XYtest {
    private XY testXY = new XY(0,0);
    private XY addingVec = new XY(0,1);


    @Test
    public void addVec() {

        assert (testXY.addVec(addingVec).equals(addingVec));
    }

}

测试运行正常。但是,如果我在@Before注释中执行我的XY对象,那么它将以错误结束。断言行中的Nullpointer。

    package junittesting;

import org.junit.Before;
import org.junit.jupiter.api.Test;
import de.hsa.games.fatsquirrel.space.XY;

public class XYtest {

    XY testXY;
    XY addingVec;

    @Before
    public void setUp() {
        testXY = new XY(0, 0);
        addingVec = new XY(0, 1);
    }

    @Test
    public void addVec() {

        assert (testXY.addVec(addingVec).equals(addingVec));
    }


}

提前致谢。

答案

正如JUnit 5 manual所述,你必须使用@BeforeEach。旧的@Beforeannotation仅适用于版本4:

@BeforeEach - 表示在当前类中的每个@Test [...]之前应该执行带注释的方法;类似于JUnit 4的@Before

以上是关于Java JUnit测试不使用@Before注释的主要内容,如果未能解决你的问题,请参考以下文章

java单元测试注释执行顺序

junit用法,before,beforeClass,after, afterClass的执行顺序

Java测试工具使用--Junit

备忘:Junit单元测试

带有 @Suite 注释的 Junit5 测试套件不使用 mvn test 命令执行测试

JUnit @Before和@After在每次测试之前和之后执行[重复]