Noções básicas de testes
8 exemplos para começar com testes de programas Solana - 5 básicos e 3 intermediários. Cobre a pirâmide de testes: testes unitários LiteSVM 0.6.x, testes de instrução Mollusk, integração Anchor TS e E2E com validador.
Busque em todas as páginas da documentação
8 exemplos para começar com testes de programas Solana - 5 básicos e 3 intermediários. Cobre a pirâmide de testes: testes unitários LiteSVM 0.6.x, testes de instrução Mollusk, integração Anchor TS e E2E com validador.
anchor test configurado.@solana/kit 7.0.0 para testes client-side.anchor --version # 0.32.1
cargo test --versionTeste de integração padrão sobe validador local.
anchor testtests/*.ts.Anchor.toml.Relacionado: Testes Anchor TS
SVM in-process sem processo de validador.
use litesvm::LiteSVM;
use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
let mut svm = LiteSVM::new();
let payer = Keypair::new();
svm.airdrop(&payer.pubkey(), 1_000_000_000).unwrap();.so com svm.add_program.Relacionado: LiteSVM
Runner leve em nível de instrução em testes Rust.
use mollusk_svm::Mollusk;
use solana_sdk::instruction::{AccountMeta, Instruction};
let mollusk = Mollusk::new(&program_id, "target/deploy/my_program");
let ix = Instruction { program_id, accounts: vec![], data: vec![] };
mollusk.process_instruction(&ix, &accounts);Relacionado: Mollusk
Testes negativos são obrigatórios para segurança.
try {
await program.methods.badWithdraw().rpc();
throw new Error("expected fail");
} catch (e) {
// expect anchor error code
}#[error_code].Relacionado: Catálogo Sealevel Attacks
CI determinístico exige ledger limpo.
solana-test-validator --reset --quiet &
anchor test --skip-local-validator--reset limpa estado entre execuções.Relacionado: Testando contra validador
Cliente e programa devem concordar nas seeds.
const [pda] = PublicKey.findProgramAddressSync(
[Buffer.from("vault"), user.toBuffer()],
program.programId
);
const account = await program.account.vault.fetch(pda);b"vault" vs "vault").Relacionado: Testando CPIs e PDAs
Testes DeFi precisam de estado de pool mainnet.
surfpool start --rpc-url https://api.mainnet-beta.solana.com
export ANCHOR_PROVIDER_URL=http://127.0.0.1:8899
anchor test --skip-local-validatorTestes de propriedade encontram bordas de overflow.
cargo fuzz run deposit_fuzz -- -max_total_time=300Versõ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: 19 de jul. de 2026