Skip to content

テストカバレッジを向上させる(現在8.8% → 目標100%) #31

@harutiro

Description

@harutiro

概要

現在のテストカバレッジは8.8%(6/68ファイル)と非常に低く、CLAUDE.mdで目標とされている100%から大きく乖離しています。重要なコンポーネントのテストを段階的に追加します。

背景

  • プロジェクトのCLAUDE.mdでは「テストカバレッジは100%を目標」と明記されている
  • Swift Testingフレームワークを使用する方針
  • 現在テストが存在するのは以下のみ:
    • ObservationDataUsecaseTests
    • AffineTransformTests
    • AntennaAffineCalibrationTests
    • SwiftDataRepositoryXCTests
    • 一部のViewModelテスト(UWBViewerSystemTests内)

現状のテストカバレッジ

レイヤー テスト済み 未テスト カバレッジ
Domain/Usecase 1/8 7/8 12.5%
Domain/Utils 2/3 1/3 66.7%
Domain/Repository 1/3 2/3 33.3%
Presentation/ViewModel 2/14 12/14 14.3%
Presentation/Router 0/4 4/4 0%
全体 6/68 62/68 8.8%

最優先でテストを追加すべきコンポーネント

Phase 1: 重要なUsecase(優先度:高)

  • AutoAntennaCalibrationUsecaseTests.swift - 新しく実装された重要な機能
  • ConnectionManagementUsecaseTests.swift - デバイス接続管理の中核
  • SensingControlUsecaseTests.swift - センシング制御の中核
  • RealtimeDataUsecaseTests.swift - リアルタイムデータ処理
  • FileManagementUsecaseTests.swift - ファイル管理

Phase 2: 重要なViewModel(優先度:高)

  • AutoAntennaCalibrationViewModelTests.swift
  • ConnectionManagementViewModelTests.swift
  • DataCollectionViewModelTests.swift
  • SensingManagementViewModelTests.swift
  • SensingViewModelTests.swift

Phase 3: Repository層(優先度:中)

  • DataRepositoryTests.swift
  • PreferenceRepositoryTests.swift

Phase 4: その他のViewModel(優先度:中)

  • FieldSettingViewModelTests.swift
  • FloorMapSettingViewModelTests.swift
  • AntennaPositioningViewModelTests.swift
  • FloorMapViewModelTests.swift
  • TrajectoryViewModelTests.swift

Phase 5: Router層とユーティリティ(優先度:低)

  • NavigationRouterTests.swift
  • SensingFlowNavigatorTests.swift
  • DateUtilsTests.swift

テスト戦略

  1. Mock/Stubの活用: Repositoryやその他の依存をモック化
  2. 既存テストをテンプレート化: ObservationDataUsecaseTests.swiftをベースに
  3. Swift Testingフレームワークの使用: XCTestは使用しない
  4. 段階的な実装: Phase 1から順に実装

受け入れ条件

  • Phase 1(重要なUsecase)のテストがすべて実装され、100%通ること
  • Phase 2(重要なViewModel)のテストがすべて実装され、100%通ること
  • ビルドが成功すること
  • すべての新規テストがSwift Testingフレームワークを使用していること

補足事項

  • 各Phaseごとに段階的にPRを作成することを推奨
  • テストカバレッジツールでカバレッジを測定しながら進める
  • Mock実装を共通化してテストコードの重複を避ける

🤖 このIssueはClaude Codeによって作成されました

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions