在之前的真香系列之2-自动录制回放的Hoverfly-java-Junit5 一文中,笔者有提到一个问题,Hoverfly-java-junit5不提供增量录制的问题。
在Junit4中,可以这样使用Hoverfly.
@ClassRule
public static HoverflyRule hoverflyRule =
HoverflyRule.inCaptureMode("simulation.json",
localConfigs()
.enableIncrementalCapture());
@Test
public testCaptureFirstA() {
}
@Test
public testCaptureSecondB(){
}
在上述案例中,如果我们先运行testCaptureFirstA测试用例,Hoverfly会在默认目录下生成simulation.json 这一文件。并且因为启动了增量录制enableIncrementalCapture,如果再单独执行testCaptureSecondB,Hoverfly会复用已有的文件进行录制结果的增量存放,而不是覆盖。这样,对于用例的逐条开发是非常有利的。
不过呢,似乎Hover团队在交付Hoverfly-java时,忘记给Hoverfly-java-junit5来开发这一功能了。这个易用性的问题给笔者在公司推广Hoverfly造成了一定的困难。为此,笔者还专门提了一个issue。
https://github.com/SpectoLabs/hoverfly-java/issues/254
Please provide this feature so we can have the case as below,
@HoverflyCapture(path = "build/resources/test/hoverfly",
filename = "captured-simulation.json",
config = @HoverflyConfig(captureAllHeaders = true, proxyLocalHost = true,enableIncrementalCapture=true))
@ExtendWith(HoverflyExtension.class)
class CaptureTests {
// ...
}
不过,似乎这个项目目前处于维护不活跃的时期。笔者大约一个月前提的Issue,到现在没有任何的回复。再观察一下,发现最近一个合并代码是2020年的最后一天。。。
本着谁提意见谁解决的优良传统,笔者自己参照Hoverfly-java的解决方案,给hoverfly-java-junit5同样增加了这个功能,并且提了一个PR
feat: add enableIncrementalCapture in hoverfly-java-junit5
通过这个提交,就可以按照上述junit5的案例来使用增量录制了。再也不用使用现在的workaround,在用例开发过程中,分开文件进行录制,最后进行请求/响应文件内容的合并。
欢迎试用
https://github.com/SpectoLabs/hoverfly-java/issues/255