Skip to content

AngleConverterTests: 0 입력 테스트 trivial, 범위 외 입력 엣지케이스 누락 #15

@seu11ee

Description

@seu11ee

문제

1. 의미없는 테스트 (항상 통과)

`test_minutesToDegrees_0minutes_returns0`, `test_secondsToDegrees_0seconds_returns0` 두 테스트는 `0 * 상수 = 0` 이라는 수학적 항등식만 검증합니다. 구현이 어떻게 바뀌어도 0을 넣으면 0이 나오므로 실질적인 보호 효과가 없습니다.

2. 범위 외 입력 테스트 없음

타이머 스펙은 1~59분 설정만 허용하지만, 현재 `AngleConverter`에 guard가 없고 테스트도 없습니다.

AngleConverter.minutesToDegrees(-1)   // → -6.0  (음수 각도, 유효하지 않음)
AngleConverter.minutesToDegrees(61)   // → 366.0 (360° 초과, 유효하지 않음)
AngleConverter.secondsToDegrees(-1)   // → -0.1  (음수 각도)

이 입력이 들어왔을 때 AngleConverter가 어떻게 처리해야 하는지 정의되어 있지 않습니다.

왜 문제인가

  • 0 테스트는 false confidence를 줍니다 — 통과하더라도 로직이 올바르다는 보장이 없습니다.
  • 범위 외 입력에 대한 계약이 없으면, 잘못된 값이 CircularTimerView에 전달될 수 있습니다.

해결 방향

  • 0 입력 테스트를 제거하거나 의미 있는 케이스(e.g., 소수점 초 정밀도)로 교체
  • 범위 외 입력에 대한 동작 정의:
    • Option A: `AngleConverter` 에 clamp 추가 후 경계값 테스트
    • Option B: clamp는 호출자 책임으로 두고, 음수/초과 입력 시 반환값을 문서화한 뒤 테스트
  • `minutesToDegrees(59)` (최대), `minutesToDegrees(1)` (최소) 경계값 테스트 추가

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions