首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringBoot @接口来总结不同的注释

SpringBoot @接口来总结不同的注释
EN

Stack Overflow用户
提问于 2020-04-28 07:11:42
回答 1查看 47关注 0票数 1

我有自己的单元测试注释,如下所示

代码语言:javascript
复制
@Retention(RetentionPolicy.RUNTIME)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@Transactional(rollbackFor = MyException.class)
public @interface DefaultTestAnnotations {
}

我的不同测试类的注释如下

代码语言:javascript
复制
@RunWith(SpringRunner.class)
// @SpringBootTest() <--------------(1)
@DefaultTestAnnotations
public class MyTest1 extends Basic4Tests {

当我单独运行MyTest1而不是它成功的时候。如果我在一个更大的复合中运行它,它会因为一些奇怪的DB实体失败而失败。为了简洁起见,我跳过了细节。

当我取消注释(1)的时候--无论是单独的还是复合的--都是成功的。现在我认为@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)已经足够了。但显然不是。

有谁想过

  • @interface声明中可以概括什么?从这个意义上说,这些都是使用的,而且是'meaningful'
  • Why,我需要再次指定@SpringBootTest()吗?我认为在interface中声明就足够了。

更新

“对于一些奇怪的DB实体故障”--意味着测试将数据保存到DB中,并且在检索数据时无法正确地恢复枚举。引发的异常表明检索了一些似乎从未存储过的虚假数据。跟踪具体问题超出了这个问题的范围,因为我找到了一个解决方案--我做的是而不是理解的。为了避免遇到类似的问题,我想要更清楚地说明如何使用@interface

EN

回答 1

Stack Overflow用户

发布于 2020-04-28 07:23:27

我猜您在一个测试中操作数据库中的数据,因此下一个测试没有假设的数据。Spring出于性能原因在测试之间重用应用程序上下文,而不重置它。

有两种解决方案:-在测试中使用@DirtiesContext注释-清理和在每次测试之前设置db

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61474599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档