Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确测试Spring@Transactional timeout_Spring_Spring Boot_Spring Data Jpa_Transactional - Fatal编程技术网

如何正确测试Spring@Transactional timeout

如何正确测试Spring@Transactional timeout,spring,spring-boot,spring-data-jpa,transactional,Spring,Spring Boot,Spring Data Jpa,Transactional,我从一个PostgreSQL数据库和一个简单的CRUD服务/存储库(都基于spring引导)中获得了一个加载数据的简单API。我已将服务层中的创建/更新方法标记为: @Transactional(timeout=5) public void create(Entity x){ ... repository.save(x) } 我如何测试(顺便说一下,集成测试)超时异常下的条件将被抛出?我的存储库是crudepository的扩展 类似于doTimeout(6000).when(

我从一个
PostgreSQL
数据库和一个简单的CRUD服务/存储库(都基于spring引导)中获得了一个加载数据的简单API。我已将服务层中的创建/更新方法标记为:

@Transactional(timeout=5)
public void create(Entity x){
   ... 
   repository.save(x) 
}
我如何测试(顺便说一下,集成测试)超时异常下的条件将被抛出?我的存储库是
crudepository
的扩展


类似于
doTimeout(6000).when(repository).save(…)
您应该参数化超时值,并通过配置文件提供它,然后在集成测试中将其设置为您的测试值。这允许您在生产配置文件中包含生产值,在测试配置文件中包含测试值

例如,在名为
应用程序测试.yaml
的配置文件中,有一个条目:

postgres.config:
  timeout: 10

然后将
timeout=5
替换为
“${postgres.config.10:20}”
。如果应用程序在没有特定配置文件的情况下启动,则
20
指定默认值。

您不需要测试事务超时。这是Spring系统的一部分,而不是你的系统。@DwB我有你的观点,但Oto我同意这篇文章中描述的所有方面:。我喜欢思考我在我的方法中描述的合同,删除它将极大地改变它。