Skip to content

TimeLetter·FileMetadata·ReceiverTimeLetter fake 10벌을 testFixtures 3벌로 #1043

Closed

Description

@1hyok

#1030 의 feature/timeletter/domain 몫이다. 3종 10벌 → 3벌.

계약 벌 수
TimeLetterRepository 4
FileMetadataRepository 3
ReceiverTimeLetterRepository 3

ReceiverTimeLetterRepository 는 이름과 달리 feature/timeletter/domain 에 있고 소비처는 feature/receiver/presentation 이다 — 픽스처는 계약이 있는 쪽(timeletter)에 둔다.

규약

픽스처 규약은 #1030 에 정본이 있고 첫 적용은 #1040 이다. 그대로 따른다.

  • 기본 동작은 메모리 저장소, 호출은 전부 기록해 테스트가 사후에 단언한다.
  • 저장소 동작으로 표현 못 하는 시나리오(경합용 게이트, 스크립트된 실패)는 onX 람다로 갈아끼운다.
  • "이 시나리오에서 호출되면 안 됨" 은 strict() + unexpectedCall(...) 로 옮긴다. 기본 동작이 관대해져 경계가 사라지지 않게 한다.
  • 스크립트 큐는 픽스처에 넣지 않는다 — 호출부에서 ArrayDeque 를 들고 onX 로 물린다.
  • 단언 자체는 바꾸지 않는다. 기록 접근자 이름이 달라지는 것까지만 허용하고, 의미가 바뀌어야 한다면 별건으로 분리한다.

완료 기준

  • 이 모듈의 계약별 fake 가 src/testFixtures 정본 1벌(+시나리오 파라미터)로 접힌다.
  • 계약에 메서드를 추가하면 :<모듈>:compileDebugTestFixturesKotlin 이 실패하는 것을 실측한다.
  • :koverXmlReportCi :konsist:test :app:compileDebugAndroidTestKotlin ktlintCheck 통과.

Activity

  1. self-assigned this
    on Aug 24, 2026
  2. assigned and unassigned on Aug 24, 2026
  3. 1hyok commented on Aug 24, 2026

    @1hyok
    CollaboratorAuthor

    담당 모듈 경계(타임레터 = @koongmai)에 따라 어사인을 넘깁니다. 본문의 계약별 벌 수 집계와 픽스처 규약은 그대로 유효하고, 규약 정본은 #1030, 첫 적용 사례는 PR #1040 입니다.

    #1030 이 걸어 둔 순서(#1045 → #1041 → #1042 → #1043 → #1044)는 app/src/androidTest 의 같은 파일을 여러 배치가 건드리기 때문입니다. 앞 배치가 닫힌 뒤 착수하시면 됩니다.

  4. assigned and unassigned on Aug 28, 2026
  5. changed the title [-]test(timeletter): TimeLetter·FileMetadata·ReceiverTimeLetter fake 10벌을 testFixtures 3벌로[/-] [+]TimeLetter·FileMetadata·ReceiverTimeLetter fake 10벌을 testFixtures 3벌로[/+] on Aug 28, 2026
  6. added
    test테스트·검증·회귀 방지 작업
    and removed
    enhancementNew feature or request
    on Aug 28, 2026
  7. added a commit that references this issue on Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:timeletter타임레터 기능 영역test테스트·검증·회귀 방지 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions