标记的代码@Before
在每次测试之前执行,而@BeforeClass
在整个测试夹具之前运行一次。如果你的测试类有十个测试,则@Before
代码将执行十次,但@BeforeClass
仅执行一次。
通常,@BeforeClass
当多个测试需要共享相同的计算昂贵的设置代码时,可以使用。建立数据库连接属于此类。你可以将代码从@BeforeClass
移到@Before
,但是测试运行可能需要更长的时间。注意,标记的代码@BeforeClass
作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。
在JUnit 5中,标记@BeforeEach
和与JUnit 4中@BeforeAll
的@Before
和等效。@BeforeClass
它们的名称更能指示它们的运行时间,并且松散地解释为:“在每个测试之前”和“一次在所有测试之前”。