两者的主要区别是什么
@Before
和@BeforeClass
- 在 JUnit 5 中
@BeforeEach
和@BeforeAll
- 在 JUnit 5 中
@After
和@AfterClass
根据JUnit Api @Before
用于以下情况:
When writing tests, it is common to find that several tests need similar objects created before they can run.
而 @BeforeClass
可用于建立数据库连接。但是 @Before
不能做同样的事情吗?
最佳答案
标记为 @Before
的代码在每次测试之前执行,而 @BeforeClass
在整个测试夹具之前运行一次。如果你的测试类有十个测试,@Before
代码会被执行十次,而@BeforeClass
只会被执行一次。
一般来说,当多个测试需要共享同一个计算量大的设置代码时,您可以使用 @BeforeClass
。建立数据库连接属于这一类。您可以将代码从 @BeforeClass
移动到 @Before
,但您的测试运行可能需要更长时间。请注意,标记为 @BeforeClass
的代码作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。
在 JUnit 5 ,标签 @BeforeEach
和 @BeforeAll
是 JUnit 4 中 @Before
和 @BeforeClass
的等价物。它们的名称更能表明它们何时运行,松散地解释为:“在每个测试之前”和“在所有测试之前”。
关于java - @Before、@BeforeClass、@BeforeEach 和 @BeforeAll 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20295578/