之间的主要区别是什么
@Before
@BeforeClass
@BeforeEach
@BeforeAll
@After
@AfterClass
根据JUnit Api @Before在以下情况下使用:
在编写测试时,通常会发现多个测试需要创建类似的对象才能运行。
而@BeforeClass可用于建立数据库连接。但不能@Before做同样的事情吗?
标记的代码@Before在每次测试之前执行,而@BeforeClass在整个测试夹具之前运行一次。如果您的测试类有十个测试,@Before代码将执行十次,但@BeforeClass只会执行一次。
通常,@BeforeClass当多个测试需要共享相同的计算量大的设置代码时,您会使用它。建立数据库连接属于这一类。您可以将代码从@BeforeClass移至@Before,但您的测试运行可能需要更长时间。请注意,标记的代码@BeforeClass作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。
在JUnit 5中,标签@BeforeEach和是和在 JUnit 4@BeforeAll中的等价物。它们的名称更能说明它们何时运行,松散地解释为:“在每个测试之前”和“在所有测试之前”。@Before``@BeforeClass
@Before``@BeforeClass