一尘不染

JUnit @BeforeClass用于Spring Boot应用程序的非静态解决方法

spring-boot

@BeforeClass如果希望JUnit的注释在所有@Test方法之前运行一次,则必须将其声明为静态。但是,这不能与依赖项注入一起使用。

@Autowire在运行JUnit测试之前,我想使用Spring Boot
清理一个数据库。我无法@Autowire静态字段,因此我需要考虑解决方法。有任何想法吗?


阅读 518

收藏
2020-05-30

共1个答案

一尘不染

只需使用@Before(而不是@BeforeClass)(或BeforeTransaction(取决于您初始化数据库的方式))。该注释必须附加到非静态公共方法上。

当然: @Before在EACH测试用例方法之前运行(不是那样@BeforeClass仅运行一次。)但是,如果您想只运行一次,则使用静态标记字段。

private static boolean initialized = false;
...
@Before
public void initializeDB() { 
   if (!initialized) {
       ... //your db initialization
       initialized = true;
   }
}
---
2020-05-30