Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

단위테스트를 해야하는 영역은 어디까지일까?

未关闭
#1 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
文档
描述清晰度
需要澄清
活跃度
停滞
技术栈
java
领域
testing-qa

调研方向

首先查看 issue 中链接的 TDD 资源,以及正文中包含的 Java service 和 exception-test 示例。将测试所述的目的与项目的 testing 指南进行比较,然后记录一条明确的规则,用于决定应覆盖哪些 service 行为,以及哪些证据能够表明该指南已经完整。

由索引模型根据 Issue 内容生成。

描述

TDD

이슈

단위테스트를 진행하면서 단위테스트를 어디까지 진행해야하는지에 대한 의문이 생겼다.

Service단의 단위테스트를 진행할 때 예외 처리 단위 테스트 또한 진행하는데 만약 다음과 같은 코드가 있다면 해당 코드를 단위 테스트를 해주는 것이 과연 효과적인 걸까?

다음은 Service 단의 코드이고

public List<...> getSth(String userId) throws BaseException {
        Users user = usersRepository.findById(userId)
                .orElseThrow(() -> new BaseException(BaseResponseStatus.EMPTY_BY_USER_ID));
...

아래는 해당 메서드의 예외 테스트 코드이다.

    @Test
    @DisplayName("Invalid User Id 테스트")
    void invalid_userId_test() {
        // given
        given(fakeUsersRepository.findById(any())).willReturn(Optional.empty());

        // when
        String userId = "admin";

        // then
        assertThatThrownBy(() -> smtService.getSth(userId))
                .isInstanceOf(BaseException.class);
    }

여기서의 테스트는 UsersRepository에서 Optional.empty()가 나왔을 때 getSth() 메서드 안에 있는 orElseThrow()가 정상작동 하는지를 보는 테스트라고 생각한다.
그렇다면 해당 테스트는 개발자의 손을 벗어난 라이브러리 단의 기능이 정상 작동하는지 테스트하고 있는게 아닐까? 즉 테스트 할 필요가 없는 부분 아닐까?

문제는 일단 개발자가 어디까지 테스트를 해야하는지에 대한 개념이 잡혀있지 않다.
이 개념이 테스트 코드를 작성하는데 가장 중요한데 방법적인 부분만 알고 핵심을 모르고 있다는 생각이 든다.
테스트 코드의 '목적'에 대한 공부가 필요하다.

공부해볼 내용

  1. 테스트 코드를 실행해야 하는 범위
  1. 좋은 테스트 코드란 무엇인가?
  • Clean Code 책을 봐보자
主要语言
没有语言数据
星标
0
派生
0
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

minaver/Daily-Issue 的其他 Issue

查看 minaver/Daily-Issue 的全部 Issue

相似的 Issue

更多 Testing & QA Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。