junit跳过datasource_maven – spring集成测试无法加载上下文“另一个资源已存在,名称为dataSource”...

我正在使用

spring-boot 1.4.3中引入的测试注释进行集成测试

@RunWith(SpringRunner.class)

@SpringBootTest

public class MyServiceIT { }

根据documentation,测试上下文被缓存并重用以加速集成测试.这种行为是我想要的,因为它需要大量的时间来初始化应用程序上下文.我的故障安全插件配置了

1

true

允许集成测试在同一进程中运行,以利用应用程序上下文缓存.

最近,我编写了一个使用@MockBean注释的集成测试来模拟某些bean的行为.

@RunWith(SpringRunner.class)

@SpringBootTest

public class AnotherServiceIT {

@MockBean

SomeService service1

}

虽然测试运行良好,但是当通过maven验证运行时,多个集成测试会因错误消息而失败

javax.naming.NamingException: Another resource already exists with

name dataSource – pick a different name

如果我使用JUnit @Ignore注释跳过此特定测试,一切都恢复正常.

此行为似乎表明使用@MockBean更改了缓存行为,并且每个测试都尝试创建自己的数据源.我还要提一下,我正在使用通过XADataSourceAutoConfiguration创建的AtomikosDataSourceBean.

如何克服此问题,以便我的集成测试仍然可以使用缓存上下文并同时使用@MockBean?

最佳答案 嗯,SomeService会以任何方式与您的数据源相关吗?

因为您的上下文被缓存而@MockBean执行以下操作:

used to add mocks to a Spring ApplicationContext … Any existing single bean of the same type defined in the context will be replaced by the mock,

If there is more than one bean of the requested type, qualifier metadata must be specified at field level:

@RunWith(SpringRunner.class)

public class ExampleTests {

@MockBean

@Qualifier("example")

private ExampleService service;

编辑:

因此,如果您的SomeService是DataSource的实现,请尝试添加限定符.如果SomeService中包含DataSource,并且您需要访问其中的某些方法,则可以尝试使用@Mock并指定需要通过自己的mock或autowire返回的任何对象.

@Mock

SomeService someService;

@Mock

SomeDependency mockDependency;

@Autowired

OtherDependency realDependency;

@Before

public void setUp() {

MockitoAnnotations.initMocks(this);

doReturn(mockDependency).when(someService).getSomeDependency();

doReturn(realDependency).when(someService).getOtherDependency();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.Reverse Integer (INT; Overflow)

Reverse digits of an integer. Example1: x 123, return 321Example2: x -123, return -321 思路:要注意溢出。用以下做法,会溢出。 class Solution { public:int reverse(int x) {int ret 0;while(x){ret ret * 10 x%10;x / 10;}return ret;} };…

c语言汇编混合编程写一个乘法,求通过C语言实现矩阵的加、减及乘法。要自己写的,不要复制过来...

满意答案eevfikx22013.11.28采纳率:53% 等级:13已帮助:8891人#include using namespace std;int main(){int am3,bm3,an3,bn3;int a[am][an];int b[bm][bn];for(int i0;i{for(int j0;j{a[i][j]i*amj;}}for(int i0;i{for(int j0;j{b[i][j]i…

LeetCode MySQL 1821. 寻找今年具有正收入的客户

文章目录1. 题目2. 解题1. 题目 表:Customers -------------------- | Column Name | Type | -------------------- | customer_id | int | | year | int | | revenue | int | --------------------(customer_id, year) 是这个表的主键。 这个表…

【Head First Java 读书笔记】(一)基本概念

Java的工作方式 你要做的事情就是会编写源代码 Java的程序结构 类存于源文件里面 方法存在类中 语句存于方法中 剖析类 当Java虚拟机启动执行时,它会寻找你在命令列中所指定的类,然后它会锁定像下面这样一个特定的方法: public static void main(String[…

oid 值 内存使用_[技术干货] zabbix监控项原型组合键值

自动发现中监控项原型使用多个值组合成一个新的键值。这里我们以华为RH5885V3的内存为例:我们先walk出要用来作为组合键值的值,我们称之为VALUE。而OID节点后面延伸出来的数值,例如.1、.2、.3这种,我们称之为INDEX。组合键值的关键…

c语言从键盘输入asdfg输出asdfg,C语言复习题参考答案.doc

第1题功能:将十进制数转换成十六进制数。第2题功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。第3题功能:以下程序是用选择法对10个整数按升序排序。第4题功能:以下程序的功能如(图1)。第5题功能&…

LeetCode MySQL 1853. 转换日期格式(日期格式化)

文章目录1. 题目2. 解题1. 题目 表: Days ------------------- | Column Name | Type | ------------------- | day | date | -------------------day 是这个表的主键。 给定一个Days表,请你编写SQL查询语句,将Days表中的每一个日期转化为&qu…

自定义计算器 android,自定义公式计算app下载

自定义公式计算器是非常强大的一款计算器软件,可以帮助大家计算各种函数,还能够自定义公式进行保存,便于以后的计算;软件包含了科学计算器的所有功能,而且没有广告,非常的方便和强大,喜欢的朋友…

进度条上的小圆点怎么做_傲视网:【AE教程】如何制作环形进度条(第一讲)...

原标题:傲视网:【AE教程】如何制作环形进度条(第一讲)大家好,福利来啦!这里将分享如何制作环形进度条,教你如何从入门到精通学AE。环形进度条是个特殊的动画,在旋转的基础上还要选择性地显示部分区域。制作…

android 行布局选择器,『自定义View实战』—— 银行种类选择器

在工作中难免遇到自定义 View 的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累。自定义View实战前言年前的最后一个开发需求,将之前H5开卡界面转变成native。意思就是开卡这个需求做成Android原生的界面&am…

LeetCode 1971. Find if Path Exists in Graph(图的遍历)

文章目录1. 题目2. 解题1. 题目 There is a bi-directional graph with n vertices, where each vertex is labeled from 0 to n - 1 (inclusive). The edges in the graph are represented as a 2D integer array edges, where each edges[i] [ui, vi] denotes a bi-directi…

月之数

月之数 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 65 Accepted Submission(s) : 35 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 当寒月还在读大一的时候&#xff0…

更新wpscan_wpscan扫描工具

简介WPScan是一个扫描WordPress漏洞的黑盒子扫描器,可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户密码等,Kali Linux默认自带了WPScan,也可以到Github项目仓库[1]中下载安装,其…

android monkey压力测试,Android-Monkey 压力测试

1.Monkey 介绍Monkey是Android中一个对App进行压力测试的命令行工具,可以向系统发送伪随机的用户事件流对正在开发的App进行压力测试(模拟用户操作App)。压力测试主要是为了提高App的稳定性、和用户留存率。Monkey功能强大,主要包含三个部分:…

LeetCode 1974. 使用特殊打字机键入单词的最少时间

文章目录1. 题目2. 解题1. 题目 有一个特殊打字机,它由一个 圆盘 和一个 指针 组成, 圆盘上标有小写英文字母 ‘a’ 到 ‘z’。 只有 当指针指向某个字母时,它才能被键入。指针 初始时 指向字符 ‘a’ 。 每一秒钟,你可以执行以…

vue弹出alert_vue+webpack 实现简单的弹窗(alert)组件

话不多说,下面是alert组件的代码(需要引用node-sass sass-loader scss-loader,主要是为了用scss样式)提示{{message}}{{negativeText}}{{positiveText}}export default {name: my-alert,props: {isShow: {type: Boolean,default: false},negativeText:{t…

android studio有错误,清单合并失败,Android Studio中出现多个错误

因此,我是Android和Java的初学者。我刚刚开始学习。今天我在尝试Intent时,发生了一个错误。Error:Execution failed for task :app:processDebugManifest.> Manifest merger failed with multiple errors, see logs我在这里找到了一些解决方案&#x…

LeetCode 1979. 找出数组的最大公约数

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 示例 1: 输入:nums [2,5,6,9,10] 输出:2 解释: nums 中…

BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )

每一连通块砸开一个就可以拿到所有的钱, 所以用并查集求连通块数 -------------------------------------------------------------------#include<bits/stdc.h>#define rep(i, n) for(int i 0; i < n; i)#define clr(x, c) memset(x, c, sizeof(x))using namespace …

horizon流程图_项目实施流程和规范模板(测试方向)

转自&#xff1a;http://blog.51cto.com/xqtesting/20523121. 简介1.1 编写背景随着公司业务的快速发展&#xff0c;技术部面临的基础技术研发、客户系统建设、新产品研发、老旧系统改造等各类建设项目越来越多。但在众多技术人员参与、并发项目交互的情况下&#xff0c;如何定…