为了账号安全,请及时绑定邮箱和手机立即绑定

@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll

@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll

呼啦一阵风 2019-08-24 15:15:40
@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll之间的区别两者之间的主要区别是什么@Before 和 @BeforeClass在JUnit 5 @BeforeEach和@BeforeAll@After 和 @AfterClass根据JUnit Api @Before用于以下情况:编写测试时,通常会发现多个测试需要在运行之前创建类似的对象。而@BeforeClass可用于建立数据库连接。但不能@Before做同样的事情?
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

标记的代码@Before在每次测试之前执行,而@BeforeClass在整个测试夹具之前运行一次。如果您的测试类有十个测试,@Before代码将执行十次,但@BeforeClass只执行一次。

通常,@BeforeClass当多个测试需要共享相同的计算昂贵的设置代码时,您使用。建立数据库连接属于此类别。您可以将代码@BeforeClass移入@Before,但您的测试运行可能需要更长时间。请注意,标记的代码@BeforeClass作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。

JUnit的5,标签@BeforeEach@BeforeAll是等价@Before@BeforeClassJUnit 4中他们的名字是多一点表明它们在运行时的,松散的解释:“以前每次测试”和“一旦所有测试之前”。


查看完整回答
反对 回复 2019-08-24
?
万千封印

TA贡献1891条经验 获得超3个赞

JUnit中的BeforeClass和BeforeClass

函数@Before注释将在具有@Test注释的类中的每个测试函数之前执行,但函数@BeforeClass将仅在类中的所有测试函数之前执行一次。

类似地,@After具有@Test注释的函数@AfterClass将在具有注释的类中的每个测试函数之后执行,但是函数将仅在类中的所有测试函数之后执行一次。

SampleClass

public class SampleClass {
    public String initializeData(){
        return "Initialize";
    }

    public String processDate(){
        return "Process";
    }
 }

SampleTest

public class SampleTest {

    private SampleClass sampleClass;

    @BeforeClass
    public static void beforeClassFunction(){
        System.out.println("Before Class");
    }

    @Before
    public void beforeFunction(){
        sampleClass=new SampleClass();
        System.out.println("Before Function");
    }

    @After
    public void afterFunction(){
        System.out.println("After Function");
    }

    @AfterClass
    public static void afterClassFunction(){
        System.out.println("After Class");
    }

    @Test
    public void initializeTest(){
        Assert.assertEquals("Initailization check", "Initialize", sampleClass.initializeData() );
    }

    @Test
    public void processTest(){
        Assert.assertEquals("Process check", "Process", sampleClass.processDate() );
    }}

产量

Before ClassBefore FunctionAfter FunctionBefore FunctionAfter FunctionAfter Class

在Junit 5

@Before = @BeforeEach@BeforeClass = @BeforeAll@After = @AfterEach@AfterClass = @AfterAll


查看完整回答
反对 回复 2019-08-24
  • 3 回答
  • 0 关注
  • 1316 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信