- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 junit 测试中遇到了奇怪的行为。对于某些测试,我需要模拟微服务客户端 bean。我使用 BDDMockito.given 来模拟微服务响应。当我在 IntelliJ 测试中运行“所有测试”时,使用此测试会失败,因为客户端尝试从微服务加载。当我重新运行那些失败的测试时,它起作用了。
我尝试启动自定义选定的测试,但找不到另一个导致这些测试失败的测试。
这可能是产生此行为的测试数量(500+)吗?
@MockBean
protected FileserverClient fileserverClient;
@Before
public void initMockBeans(){
given(fileserverClient.createFrom64(any(File64.class)))
.willReturn(FileCreatorForTest.createFile());
}
这里的错误:它正在尝试连接到我的领事以获取通往我的微服务的路由。不必如此,因为 FeignClient 应该已被 mock 。
2018-02-07 14:52:58.325 WARN 22665 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'retryableRibbonLoadBalancingHttpClient' defined in org.springframework.cloud.netflix.ribbon.apache.HttpClientRibbonConfiguration: Unsatisfied dependency expressed through method 'retryableRibbonLoadBalancingHttpClient' parameter 2; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ribbonLoadBalancer' defined in org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.loadbalancer.ILoadBalancer]: Factory method 'ribbonLoadBalancer' threw exception; nested exception is com.ecwid.consul.transport.TransportException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Connexion refusée (Connection refused)
2018-02-07 14:52:58.333 ERROR 22665 --- [ main] o.z.p.spring.web.advice.AdviceTrait : Internal Server Error
我尝试启动除一个之外的所有测试文件,它有效。我选择排除的一个并禁用另一个它有效的(我玩这个游戏很长时间试图找到可能导致此问题的测试文件)。
潜在失败测试的示例代码:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MeetingApp.class,SecurityBeanOverrideConfiguration.class})
public class MeetingRoomResourceIntTest extends BaseResourceTest {
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
final MeetingRoomResource meetingRoomResource = new MeetingRoomResource(meetingRoomService, meetingRoomQueryService);
this.restMeetingRoomMockMvc = MockMvcBuilders.standaloneSetup(meetingRoomResource)
.setCustomArgumentResolvers(pageableArgumentResolver)
.setControllerAdvice(exceptionTranslator)
.setConversionService(createFormattingConversionService())
.setMessageConverters(jacksonMessageConverter).build();
}
@Test
@Transactional
public void createMeetingRoom() throws Exception {
int databaseSizeBeforeCreate = meetingRoomRepository.findAll().size();
// Create the MeetingRoom
MeetingRoomDTO meetingRoomDTO = meetingRoomMapper.toDto(meetingRoom);
meetingRoomDTO.setFile64(FileCreatorForTest.createFile64());
restMeetingRoomMockMvc.perform(post("/api/meeting-rooms")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJsonBytes(meetingRoomDTO)))
.andExpect(status().isCreated());
// Validate the MeetingRoom in the database
List<MeetingRoom> meetingRoomList = meetingRoomRepository.findAll();
assertThat(meetingRoomList).hasSize(databaseSizeBeforeCreate + 1);
MeetingRoom testMeetingRoom = meetingRoomList.get(meetingRoomList.size() - 1);
assertThat(testMeetingRoom.getMdLocationId()).isEqualTo(DEFAULT_MD_LOCATION_ID);
assertThat(testMeetingRoom.getFspictureId()).isEqualTo(FileCreatorForTest.DEFAULT_FS_PICTURE_ID.intValue());
assertThat(testMeetingRoom.getName()).isEqualTo(DEFAULT_NAME);
assertThat(testMeetingRoom.getDescription()).isEqualTo(DEFAULT_DESCRIPTION);
assertThat(testMeetingRoom.getCapacity()).isEqualTo(DEFAULT_CAPACITY);
assertThat(testMeetingRoom.isNaturalDayLight()).isEqualTo(DEFAULT_NATURAL_DAY_LIGHT);
assertThat(testMeetingRoom.isPamFriendly()).isEqualTo(DEFAULT_PAM_FRIENDLY);
assertThat(testMeetingRoom.getStars()).isEqualTo(DEFAULT_STARS);
assertThat(testMeetingRoom.getWrapUpTime()).isEqualTo(DEFAULT_WRAP_UP_TIME);
}
}
还有我的 BaseResourceTest:
public abstract class BaseResourceTest
{
@MockBean
protected FileserverClient fileserverClient;
public BaseResourceTest()
{
MyCurrentTenantIdentifierResolver.forceTenantId("junit");
}
@Before
public void initMockBeans(){
given(fileserverClient.createFrom64(any(File64.class)))
.willReturn(FileCreatorForTest.createFile());
}
}
客户端在 EntityListener 组件内部使用并静态设置。这会导致不稳定吗?
@Component
public class FileServerDependantListener {
private Logger logger;
static private FileserverClient fileserverClient;
private AbstractFileServerDependantEntity entity;
public FileServerDependantListener() {
logger = Logger.getLogger(FileServerDependantListener.class.getName());
}
@Autowired
public void init(FileserverClient fileserverClient){
FileServerDependantListener.fileserverClient = fileserverClient;
}
@PreUpdate
@PrePersist
public void preCommit(AbstractFileServerDependantEntity entity){
if (entity.getFile64() != null) {
entity.getFile64().setFileType(entity.getFileType());
File file = fileserverClient.createFrom64(entity.getFile64());
entity.setFsPictureId(file.getId());
}
}
}
最佳答案
在 IntelliJ 中一起运行测试时,测试的应用程序上下文可能会在测试之间共享。如果部分上下文受到测试本身甚至上下文加载的影响,这可能会导致问题。
您可以尝试使用 @DirtiesContext
注释所有测试类,以确保为每个测试类加载新的应用程序上下文。如果需要,此注释还可以在 @Test
方法的方法级别使用。
关于java - mock bean 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48665852/
我遇到了一个奇怪的问题。我有这个: $(document).ready(function () {
我正在编写一个程序,它从列表中读取一些 ID,从中找出不同的 URL,然后将图像保存到我的 C: 驱动器中。 如果我在浏览器中导航到图像 URL,它们就会起作用。此外,如果我尝试从不同的服务器获取图像
我编写了一个 REST WCF RIA Silverlight 4.0 兼容服务,我可以从 javascript + jQuery.1.4.2.js + JSON2.js(当然,还可以从 .NET 4
我很确定这个网站实际上还没有得到回答。一劳永逸地,与 32 位有符号整数范围内的数字字符串匹配的最小正则表达式是什么,范围是 -2147483648至 2147483647 . 我必须使用正则表达式进
我有两个data.table;我想从那些与键匹配的元素中随机分配一个元素。我现在这样做的方式相当慢。 让我们具体点;这是一些示例数据: dt1<-data.table(id=sample(letter
我已经安装了 celery 、RabitMQ 和花。我可以浏览到花港。我有以下简单的工作人员,我可以将其附加到 celery 并从 python 程序调用: # -*- coding: utf-8 -
我正在使用 ScalaCheck 在 ScalaTest 中进行一些基于属性的测试。假设我想测试一个函数,f(x: Double): Double仅针对 x >= 0.0 定义的, 并返回 NaN对于
我想检查文件是否具有有效的 IMAGE_DOS_SIGNATURE (MZ) function isMZ(FileName : String) : boolean; var Signature: W
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我在工作中查看了一些代码,发现了一些我以前没有遇到过的东西: for (; ;) { // Some code here break; } 我们一直调用包含这个的函数,我最近才进去看看它是
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我试图编写一个函数,获取 2D 点矩阵和概率 p 并以概率 p 更改或交换每个点坐标 所以我问了一个question我试图使用二进制序列作为特定矩阵 swap_matrix=[[0,1],[1,0]]
这个问题在这里已经有了答案: Using / or \\ for folder paths in C# (5 个答案) 关闭 7 年前。 我在某个Class1中有这个功能: public v
PostgreSQL 10.4 我有一张 table : Column | Type ------------------------- id | integer| title
我正在 Postgresql 中编写一个函数,它将返回一些针对特定时区(输入)计算的指标。 示例结果: 主要问题是这只是一个指标。我需要从其他表中获取其他 9 个指标。 对于实现此目标的更简洁的方法有
我需要在 python 中模拟超几何分布(用于不替换采样元素的花哨词)。 设置:有一个装满人口许多弹珠的袋子。弹珠有两种类型,红色和绿色(在以下实现中,弹珠表示为 True 和 False)。从袋子中
我正在使用 MaterializeCSS 框架并动态填充文本输入。我遇到的一个问题是,在我关注该字段之前,valid 和 invalid css 类不会添加到我的字段中。 即使我调用 M.update
是否有重叠 2 个 div 的有效方法。 我有以下内容,但无法让它们重叠。 #top-border{width:100%; height:60px; background:url(image.jpg)
我希望你们中的一位能向我解释为什么编译器要求我在编译单元中重新定义一个静态固定长度数组,尽管我已经在头文件中这样做了。这是一个例子: 我的类.h: #ifndef MYCLASS_H #define
我正在使用旧线程发布试图解决相同问题的新代码。什么是安全 pickle ? this? socks .py from socket import socket from socket import A
我是一名优秀的程序员,十分优秀!