Rust Integration Test Scaffolder
Scaffold integration tests for LibrAgent following the project's strict testing rules.
Critical Rule
CI runs cargo test --tests, NOT cargo test --lib.
#[cfg(test)]blocks insidesrc/are NEVER executed in CI- Only tests in
tests/directory (integration tests) run in CI - On Windows,
cargo test --libcrashes withSTATUS_ENTRYPOINT_NOT_FOUNDdue to DLL shadowing test = falseis set inCargo.tomlfor library crates
Template
use sqlx::sqlite::SqlitePoolOptions;
use sea_orm::SqlxSqliteConnector;
use tauri_mcp_agent_lib::migration::Migrator;
use sea_orm_migration::MigratorTrait;
async fn setup_db() -> sea_orm::DatabaseConnection {
let pool = SqlitePoolOptions::new()
.connect("sqlite::memory:")
.await
.unwrap();
let db = SqlxSqliteConnector::from_sqlx_sqlite_pool(pool);
Migrator::up(&db, None).await.unwrap();
db
}
#[tokio::test]
async fn test_descriptive_name() {
let db = setup_db().await;
// Test implementation here
}
Test Categories
Database/Repository Tests
- Test SeaORM entity mappings
- Test repository queries
- Test migration up/down
- Test foreign key constraints
MCP Integration Tests
- Test builtin server tool execution
- Test session isolation
- Test
MCPServiceProxyrouting - Test external MCP server connection
Command Handler Tests
- Test Tauri command inputs/outputs
- Test error handling paths
- Test permission validation
Placement
src-tauri/tests/<module>_tests.rs- Integration tests by module- Use descriptive filenames matching the module being tested
Verification
# Run all integration tests (CI command)
cargo test --tests
# Run specific test file
cargo test --test <file_stem>