根据它的Javadoc,mono.elapse()
将生成mono
,其中的第一个值是subscribe和第一个next信号之间的经过时间。
以下测试不起作用
StepVerifier.withVirtualTime(() -> Mono.just(1)
.delaySubscription(Duration.ofSeconds(1))
.elapsed(),
() -> VirtualTimeScheduler.enable(true), 1)
.thenAwait(Duration.ofSeconds(1))
.expectNextMatches(tuple2 -> tuple2.getT1() >= 1000 && tuple2.getT2() == 1)
.verifyComplete();
它将抛出异常:
java.lang.AssertionError: expectation "expectNextMatches" failed (predicate failed on value: 11,1)
我原以为经过的时间至少是1000ms,但结果只有11ms。
elapsed()
运算符实际上使用一个基础的timedscheduler
来获取时钟“instants”以计算时间增量,因此当使用with virtualtime
时,基础的调度程序应该是virtualtimescheduler
...
但是有一个bug:当使用默认的调度器
时,这样的运算符实际上获得了缓存在包装器中的公共实例。问题是包装器没有委托其now
方法,而elapsed
使用的方法就是这个方法。
由于now()
的默认实现是使用system.CurrentTimeMillis()
,因此您实际上看到的是经过的内容将绕过虚拟时间并报告实时差值。
为了解决这个问题,在修复bug之前,您可以显式地创建并提供VirtualTimeScheduler
,如下所示:
@Test
public void elapsedWithVirtualTimeWorkaround() {
//we have to create a reference that will be used in 2 places
VirtualTimeScheduler vts = VirtualTimeScheduler.create();
StepVerifier.withVirtualTime(() -> Mono.just(1)
.delaySubscription(Duration.ofSeconds(1))
.elapsed(vts), //this avoids the cache problem
() -> vts, //the supplied scheduler here will be automatically activated by StepVerifier
1)
.thenAwait(Duration.ofSeconds(1)) //this uses the same vts once again
.expectNextMatches(tuple2 -> tuple2.getT1() >= 1000 && tuple2.getT2() == 1)
.verifyComplete();
}
pom.xml版本信息: SpringFox-Swagger2:2.5.0 昂首阔步-核心:1.5.10 springfox-swagger-ui:2.6.1 Springboot:1.5.3 我有一个项目与swagger2和Springboot。 没有@Aspect的项目代码工作得很好。 正确的结果: 但是当我添加以下代码时,swagger-ui没有显示test-api-impl。 swagge
Selenium版本:2.41.0(作为Nuget包安装)OS:Windows7浏览器:Firefox浏览器版本:32
为了我的研究,我在firefox中做了一些源代码修改并自己构建。为了自动化测试,我选择使用Selenium,但不幸的是,我新构建的Firefox似乎不支持Selenium。 我做了以下工作: Firefox确实会打开并且响应迅速(我可以在搜索栏中输入一个网站)。但过了一段时间,python脚本崩溃,出现以下错误消息: 我在谷歌搜索了那个错误消息,并且大多数解决方案都建议我应该更新Selenium,
我试图构建的是一个spring-boot(V1.2.3)应用程序,并使用SpringFox(swagger2)V2.0.0公开我的Rest API 我的大摇大摆的Spring配置 以下是如果不使用: 有没有一个解决方案来创建一个正确的、没有价值和逃避的大摇大摆的JSON?
但是在我使用运行应用程序的服务器上,环境变量仍然。 我用来在服务器上运行应用程序的pm2命令是:
我试图将JMX与activeMQ一起用于监控。到目前为止,我一直将其作为参考,但到目前为止我无法远程连接到JMX,而且我在activeMQ日志中没有看到任何提到JMX url的内容。我想知道是否有其他方法来确保jmx工作正常?它应该在activemq日志中显示吗?PS我正在使用jdk1.7和activeMQ 5.14.2。 提前感谢! 编辑 我在activemq.xml文件中设置了useJmx="