Skip to content

Testing

Testing guide for Toss development.

Running Tests

Rust Tests

cd rust_core
cargo test

Flutter Tests

cd flutter_app
flutter test

All Tests

make test-all

Test Structure

Rust Core Tests

Located in rust_core/src/**/tests/:

  • Network Tests: P2P, relay, mDNS
  • Crypto Tests: Key exchange, encryption
  • Protocol Tests: Message serialization
  • Storage Tests: Database operations

Flutter Tests

Located in flutter_app/test/:

  • Widget Tests: UI component tests
  • Service Tests: Service layer tests
  • Integration Tests: End-to-end tests

Test Coverage

Target coverage: 70%

Check coverage:

cd rust_core
cargo tarpaulin --out Html

Writing Tests

Rust Test Example

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_function() {
        assert_eq!(function(), expected);
    }
}

Flutter Test Example

void main() {
  testWidgets('Widget test', (WidgetTester tester) async {
    await tester.pumpWidget(MyWidget());
    expect(find.text('Hello'), findsOneWidget);
  });
}

Integration Tests

E2E tests require FFI bindings:

cd flutter_app
flutter test integration_test/app_test.dart

CI/CD Testing

Tests run automatically on:

  • Every push to main/develop
  • Every pull request
  • Nightly builds

See .github/workflows/ci.yml for details.

Next Steps