You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用JUnit是否可以实现视频录制?当前使用Cucumber框架

问题解答

完全可以实现,无需依赖JUnit组件,直接通过Cucumber提供的@Before钩子结合Testcontainers的VNC录制能力即可完成配置。

实现步骤

  • 确认项目已引入Cucumber Java、Testcontainers BrowserWebDriverContainer、VNC录制相关依赖,你要求使用的cucumber.api.java.Before为Cucumber旧版本注解,若使用Cucumber 7+版本可替换为io.cucumber.java.Before。
  • 编写Cucumber钩子类,将容器初始化、启动逻辑放到@Before注解修饰的方法中,容器声明为静态变量可实现全局复用,避免每个测试场景重复启动容器。

完整代码示例:

import cucumber.api.java.Before;
import en.sbtqa.tag.pagefactory.drivers.Capabilities;
import org.testcontainers.containers.BrowserWebDriverContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.VncRecordingMode;
import org.testcontainers.containers.VncRecordingFormat;
import java.io.File;
import java.time.Duration;

public class TestContainerHook {
    // 静态声明容器全局复用
    public static BrowserWebDriverContainer<?> container;

    @Before
    public void initBrowserContainer() {
        // 避免重复初始化已运行的容器
        if (container == null || !container.isRunning()) {
            container = new BrowserWebDriverContainer<>()
                    .withCapabilities(Capabilities.getFirefoxOptions())
                    .withRecordingMode(VncRecordingMode.RECORD_ALL, new File("target"), VncRecordingFormat.MP4)
                    .withStartupTimeout(Duration.ofMinutes(2))
                    .withNetwork(Network.newNetwork());
            container.start();
        }
    }

    // 可选:所有测试结束后销毁容器
    // import cucumber.api.java.After;
    // @After
    // public void destroyContainer() {
    //     if (container != null && container.isRunning()) {
    //         container.stop();
    //     }
    // }
}

注意事项

  • 录制的MP4视频默认存储到指定的target目录下,命名规则为{容器ID}-{启动时间}.mp4,可通过withRecordingFileName参数自定义文件名。
  • 若只需录制失败用例,将VncRecordingMode.RECORD_ALL替换为VncRecordingMode.RECORD_FAILING即可,需配合在@After钩子中调用container.afterTest(用例执行结果布尔值)传入执行状态。
  • 运行Cucumber时需配置glue参数,确保框架可以扫描到钩子类所在的包,否则钩子不会生效。

内容的提问来源于stack exchange,提问作者Александр Денисов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:15:01