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

如何在Move语言中仅为测试场景使用依赖?

在Move中仅为测试添加依赖的方法

Move确实没有像Rust那样的#[cfg(test)]条件编译注解,无法直接在主代码里通过标记实现仅为测试引入依赖。要达成这个需求,需要借助Move的测试模块分离和依赖配置区分机制来实现,具体操作如下:

  • 将测试代码独立拆分
    Move的测试逻辑通常建议放在单独的.move文件中(比如命名为xxx_test.move),而非与主代码混写。如果要引入仅测试用的外部依赖,这种独立拆分的方式能更清晰地隔离主代码与测试代码的依赖范围。

  • 在Move.toml中区分主/测试依赖
    在项目的Move.toml配置文件里,把测试专用的依赖放在[dev-dependencies]区块下,主代码所需依赖则放在[dependencies]中。这样配置后,dev-dependencies下的依赖只会在编译测试代码时被加载,不会影响主代码的编译过程。
    示例配置:

    [dependencies]
    # 主代码依赖
    AptosFramework = { git = "https://github.com/aptos-labs/aptos-core.git", subdir = "aptos-move/framework/aptos-framework", rev = "main" }
    
    [dev-dependencies]
    # 仅测试用依赖
    AptosTestFramework = { git = "https://github.com/aptos-labs/aptos-core.git", subdir = "aptos-move/framework/aptos-test-framework", rev = "main" }
    
  • 在测试模块中引入依赖
    在独立的测试模块文件里,直接引入测试依赖即可,因为dev-dependencies的生效范围仅限测试编译阶段,不会对主代码造成影响:

    use aptos_test_framework::aptos_account;
    
    #[test]
    fun test_example() {
        // 使用测试依赖的功能
        let account = aptos_account::create_account();
        // ...测试逻辑实现
    }
    

如果是在同一模块内编写简单测试函数,可以用#[test_only]标记测试函数以访问模块私有成员,但涉及外部测试依赖时,还是推荐使用「独立测试模块+dev-dependencies」的方案,更符合Move的工程规范。

内容的提问来源于stack exchange,提问作者Daniel Porteous

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:31:23