小编典典

@Before、@BeforeClass、@BeforeEach 和 @BeforeAll 之间的区别

all

之间的主要区别是什么

  • @Before@BeforeClass
    • 在 JUnit 5@BeforeEach@BeforeAll
  • @After@AfterClass

根据JUnit Api @Before在以下情况下使用:

在编写测试时,通常会发现多个测试需要创建类似的对象才能运行。

@BeforeClass可用于建立数据库连接。但不能@Before做同样的事情吗?


阅读 106

收藏
2022-03-14

共1个答案

小编典典

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

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

JUnit 5中,标签@BeforeEach和是和在 JUnit
4@BeforeAll中的等价物。它们的名称更能说明它们何时运行,松散地解释为:“在每个测试之前”和“在所有测试之前”。@Before``@BeforeClass

2022-03-14