【发布时间】:2016-10-07 20:43:20
【问题描述】:
在每次运行 JUnit 测试之前,我需要设置某些东西。需要加载一些属性,需要建立数据库连接,需要启动单独的 J2SE 应用程序等。当每个单独的测试完成后,可以终止数据库连接并关闭 J2SE 应用程序。
我可以通过在测试套件中使用 @BeforeClass 和 @AfterClass 注释来实现这一点,但这限制了我只能在套件内运行测试。如果我想在套件之外运行单独的测试,它将不会运行套件设置和拆卸方法。同样,如果我想运行单个测试方法(通过 IDE),它不会运行套件中的设置和拆卸。
有没有办法设置 JUnit 测试,以便无论它们如何运行,通过套件、测试用例或单个方法,它们始终只运行一个设置方法在运行任何东西之前进行一次,并且在每次测试执行后进行一次拆卸仅?让所有测试用例扩展一个带有静态初始化器的抽象类可以解决设置问题,但不能解决拆卸问题。
【问题讨论】:
-
@mre 该解决方案仅适用于初始设置。如果我有一个仅在 tearDownIsDone 为 false 的情况下运行的 tearDown 方法,它将在第一个类完成后运行,而不是在 每个 类完成后运行。我需要一个适用于设置和拆卸的解决方案。