Spring & JUnit 5 - 当@AfterAll 必须为静态时如何清除数据库
Posted
技术标签:
【中文标题】Spring & JUnit 5 - 当@AfterAll 必须为静态时如何清除数据库【英文标题】:Spring & JUnit 5 - How to clear database when @AfterAll must be static 【发布时间】:2020-01-04 20:28:11 【问题描述】:@BeforeAll 和 @AfterAll 必须是静态的。所以我不能使用 JdbcTemplate。我应该如何清空数据库?
我现在已经用@PostConstruct 初始化了一个方法中的数据。但我找不到工作的对手。我曾考虑向@AfterEach 添加一个计数器并在最后一次执行时删除数据库。但这不是一个很好的解决方法。
【问题讨论】:
AfterClass 已经要求带注释的方法是静态的。那么有什么区别呢?此外,JUnit5 允许 AfterAll 方法不是静态的:junit.org/junit5/docs/current/user-guide/… 对不起我的错误!但是非常感谢您的解决方案。如果您将其放在答案中,我可以将其标记为解决方案。 【参考方案1】:JUnit 4 中的@AfterClass
要求带注释的方法为static
。所以没有区别:如果你可以在 JUnit 4 中使用 @AfterClass
,你仍然可以在 JUnit Jupiter 中使用 @AfterAll
。
然而,区别在于 JUnit Jupiter允许 @AfterAll
-注解的方法不是静态的。请参阅the documentation 了解如何允许这样做。
【讨论】:
以上是关于Spring & JUnit 5 - 当@AfterAll 必须为静态时如何清除数据库的主要内容,如果未能解决你的问题,请参考以下文章
JUnit 4 & Spring Boot - 在测试前有选择地重新加载上下文/重新加载 Spring Security 配置
使用 JUnit 5 的 spring-boot-starter-test
JUnit 5:将 spring 组件注入 Extension (BeforeAllCallback / AfterAllCallback)