2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

JUnit과 Mockito의 차이점은 무엇인가요?

_____
Q1: JUnit과 Mockito는 각각 무엇인가요?
A1: JUnit은 Java에서 단위 테스트를 작성하고 실행하기 위한 테스트 프레임워크입니다. 반면 Mockito는 Java에서 객체(Mock 객체)를 생성하여 의존성 주입 없이 테스트할 수 있게 도와주는 모킹(mocking) 프레임워크입니다.

Q2: JUnit과 Mockito는 어떤 역할을 하나요?
A2: JUnit은 테스트 케이스 작성, 테스트 실행, 결과 리포트 등 테스트 수명주기 전체를 관리하는 역할을 합니다. Mockito는 테스트 대상 객체가 의존하는 다른 객체들을 모의(Mock)하여, 진짜 객체 없이도 독립적이고 제어된 테스트가 가능하게 하는 역할을 합니다.

Q3: JUnit으로 할 수 있는 것은 무엇인가요?
A3: 테스트 메서드 작성, 테스트 실행, 애서션(assertion) 수행, 테스트 전후 설정 및 종료 작업, 테스트 스위트 구성 등이 가능합니다.

Q4: Mockito로 할 수 있는 것은 무엇인가요?
A4: 특정 메서드 호출에 대한 예상 결과 지정, 메서드 호출 여부 및 횟수 검증, 예외 발생 설정, 행위 기반 테스트, 스텁(stub) 객체와 스파이(spy) 객체 생성 등이 가능합니다.

Q5: 두 프레임워크는 상호 보완적인가요?
A5: 네, JUnit과 Mockito는 함께 사용되는 경우가 많습니다. JUnit이 테스트 실행과 관리 역할을 담당하고, Mockito는 테스트 대상 객체의 의존성을 모킹하여 독립적인 테스트 환경을 조성합니다.

Q6: JUnit만으로도 테스트가 가능한가요?
A6: 기본적인 단위 테스트 작성과 실행은 JUnit만으로 가능합니다. 하지만 테스트 대상 객체가 외부 의존성(예: 데이터베이스, 웹 서비스)을 가질 경우, Mockito와 같은 모킹 프레임워크를 사용하여 해당 의존성을 대체하고 테스트를 단순화하는 것이 좋습니다.

Q7: Mockito 없이 테스트했을 때의 문제점은?
A7: 실제 의존 객체를 사용하면 테스트가 느려지고, 외부 환경에 영향을 받으며, 테스트가 독립적이지 않게 됩니다. 또한 특정 상황을 재현하기 어렵거나, 테스트가 복잡해질 수 있습니다.

Q8: JUnit과 Mockito의 사용하는 방식의 차이는 무엇인가요?
A8: JUnit은 테스트 클래스와 메서드를 @Test 같은 애노테이션으로 정의하고 직접 테스트 코드를 작성합니다. Mockito는 테스트 코드 내에서 `mock()`, `when()`, `verify()` 같은 메서드를 이용해 모의 객체를 생성 및 설정합니다.

Q9: 두 프레임워크 중 어느 쪽이 더 중요하나요?
A9: 두 프레임워크는 서로 보완적이므로 중요성은 용도에 따라 다릅니다. 단순한 로직 테스트엔 JUnit만으로 충분하지만, 의존성을 분리하고 고립된 테스트 환경을 만들 때는 Mockito를 함께 사용하는 것이 중요합니다.

Q10: 결론적으로, JUnit과 Mockito의 가장 큰 차이점은 무엇인가요?
A10: JUnit은 테스트의 구조와 실행을 담당하는 테스트 프레임워크이고, Mockito는 테스트 대상 객체의 의존성을 가짜(mock) 객체로 대체하여 독립적으로 테스트할 수 있도록 지원하는 모킹 프레임워크라는 점입니다.
JUnit과 Mockito는 자바 기반의 테스트 프레임워크이자 라이브러리이지만, 각각의 역할과 목적이 다릅니다.

이를 이해하기 위해 두 가지 도구를 하나씩 살펴보고, 그 차이점을 설명하겠습니다.

1. JUnit이란? JUnit은 자바 애플리케이션을 위한 단위 테스트(Unit Test)를 작성하고 실행하는 데 사용되는 프레임워크입니다.

- 역할 : 테스트 케이스를 정의하고, 테스트 메서드를 실행하며, 테스트 결과를 보고하는 역할을 합니다.

- 목적 : 코드가 기대한 대로 동작하는지 검증하기 위한 자동화된 테스트를 만들고 관리하는 데 집중합니다.

- 주요 기능 : - @Test 어노테이션을 통해 테스트 메서드 지정 - 테스트 전후에 실행할 메서드 설정(@Before, @After 등) - 예외 테스트, 시간 제한 테스트 지원 - 다양한 assert 메서드를 통해 결과 검증 즉, JUnit은 테스트를 작성하고 실행하는 ‘틀’을 제공한다고 보면 됩니다.



2. Mockito란? Mockito는 자바용 모킹(mocking) 프레임워크로, 테스트 중에 의존 객체를 가짜로 만들어 행동을 제어하고 검증할 수 있게 도와줍니다.

- 역할 : 실제 객체 대신에 동작을 흉내낸 ‘모의 객체(mock object)’를 만들어서 테스트 대상을 고립시켜줍니다.

- 목적 : 외부 의존성(데이터베이스, 네트워크, 복잡한 연산 등)을 배제하고, 테스트하고자 하는 코드의 로직만 집중해서 검증할 수 있도록 지원. - 주요 기능 : - 객체를 가짜로 생성(mock 객체 생성) - 특정 메서드 호출 시 반환값 정의(when-then 패턴) - 메서드 호출 여부 및 횟수 검증(verify) - 특정 매개변수를 기반으로 한 동작 설정 즉, Mockito는 테스트를 위한 ‘도구’로서 외부 의존성을 대신하는 ‘모의 객체’를 만들어 직접 제어하는 데 초점이 맞춰져 있습니다.



3. 차이점 정리 - 기능적 차이 : - JUnit은 테스트 케이스를 작성·실행하는 ‘테스트 프레임워크’이다.

- Mockito는 테스트 대상의 의존성을 대체하는 ‘모킹 라이브러리’이다.

- 사용 목적 : - JUnit은 테스트를 실행하고 결과를 검증하는 데 집중한다.

- Mockito는 외부 의존성을 격리하기 위해 가짜 객체를 만들어 테스트 환경을 조성한다.

- 상호 보완 관계 : 보통 JUnit과 Mockito는 함께 사용됩니다.

JUnit이 테스트 메서드를 관리·실행하면, Mockito가 그 테스트 내에서 필요한 모킹 기능을 제공하여 더 정교한 단위 테스트를 완성하는 역할을 합니다.



4. 실제 사용 예시 예를 들어, 서비스 클래스가 데이터베이스에서 정보를 가져오는 DAO 객체에 의존한다고 가정했을 때, - JUnit만 사용하면 테스트 메서드를 만들어 서비스 로직을 호출하고 결과를 검증한다.

- 하지만 DAO가 실제 DB를 호출한다면 테스트는 느려지고 복잡해진다.

- Mockito를 사용하면 DAO를 모의 객체로 만들어 반환값을 미리 지정해, 서비스 로직만 빠르고 독립적으로 테스트할 수 있다.

--- 요약 : - JUnit : 단위 테스트를 작성하고 실행하는 기본적인 테스트 프레임워크 - Mockito : 단위 테스트 시 의존 객체를 가짜로 만들어 행동을 제어 및 검증하는 모킹 라이브러리 두 도구는 역할이 다르기 때문에 단독으로 쓰거나 함께 조합해서 사용하는 것이 일반적입니다.

작성자: 정수호 [비회원] | 작성일자: 1년 전 2025-05-26 02:50:40
조회수: 230 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.