Carregando Programas e Fixtures
Pré-carregue programas e fixtures de contas determinísticos para que cada execução de teste comece do mesmo estado on-chain.
Busque em todas as páginas da documentação
Pré-carregue programas e fixtures de contas determinísticos para que cada execução de teste comece do mesmo estado on-chain.
Cartão de receita de referência rápida - pronto para copiar e colar.
solana-test-validator --reset \
--bpf-program <PROGRAM_ID> target/deploy/my_program.so \
--account <PUBKEY> fixture.json
anchor testQuando usar:
.so de terceiros em IDs fixos.# 1. Exporte uma conta fixture uma vez da devnet/mainnet
solana account <CONFIG_PUBKEY> --output json-compact > config-fixture.json
# 2. Inicie o validador com programa + fixture
PROGRAM_ID=$(solana-keygen pubkey target/deploy/my_program-keypair.json)
solana-test-validator --reset \
--bpf-program "$PROGRAM_ID" target/deploy/my_program.so \
--account <CONFIG_PUBKEY> config-fixture.json
# 3. Execute testes contra estado conhecido
solana config set --url http://127.0.0.1:8899
anchor test --skip-local-validatorO que isso demonstra:
--bpf-program carrega seu bytecode no gênesis.--account injeta lamports/owner/dados do JSON exportado..so baixados de solana program dump.[test.validator] em Anchor.toml.| Fonte | Comando | Caso de uso |
|---|---|---|
| Exportação RPC | solana account --output json | Configs realistas |
| JSON escrito à mão | editor | Estado sintético mínimo |
| Txs de setup de teste | hooks before | Dinâmico, porém mais lento |
| LiteSVM set_account | API Rust | Testes unitários rápidos |
# Exemplo Anchor.toml
# [test.validator]
# url = "https://api.mainnet-beta.solana.com"
# clone = ["<MINT>", "<ORACLE>"]solana account de origem.declare_id! e pubkey do keypair.| Alternativa | Use quando | Não use quando |
|---|---|---|
--clone da mainnet | Layout ao vivo necessário | Testes mínimos só de config |
| Instruções de setup on-chain | Testar fluxos de init | Custo repetido de CI |
| LiteSVM | Lógica pura de programa Rust | Clientes RPC end-to-end |
| Deploy compartilhado devnet | QA manual da equipe | Verificações automatizadas de PR |
Padrão comum: tests/fixtures/ commitado no git com origem documentada.
Sim em [test.validator] com array clone e url para o cluster de origem.
Repita flags --bpf-program <ID> <SO> em uma linha de comando do validador.
JSON exportado inclui lamports - garanta o suficiente para aluguel ao injetar manualmente.
Transações podem mutar estado após o boot - fixtures são apenas condições iniciais.
Não faça commit de dados privados de usuário - sanitize pubkeys e saldos em fixtures compartilhados.
Fork Surfpool reduz a necessidade de fixtures manuais - ainda útil para overlays de config customizados.
Respeite limites de tamanho de conta - contas grandes tornam a inicialização proporcionalmente mais lenta.
Carregue .so no ID do programa; autoridade de upgrade segue regras do loader na localnet.
Execute novamente solana account --output json contra estado bom do cluster e incremente a versão do arquivo na mensagem de commit.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026