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

JUnit에서 테스트 메소드를 작성하는 방법은?

_____
Q1: JUnit에서 테스트 메소드는 어떻게 선언하나요?
A1: JUnit 테스트 메소드는 메소드 선언부 위에 `@Test` 어노테이션을 붙여서 선언합니다. 예를 들어,
```java
@Test
public void testMethodName() {
// 테스트 코드 작성
}
```

Q2: JUnit 테스트 메소드의 접근 제한자는 무엇이 좋나요?
A2: JUnit 4부터는 테스트 메소드를 `public`으로 선언하는 것이 일반적이지만, JUnit 5부터는 `public`이 아니어도 되며 보통 `default` (package-private) 또는 `public`으로 선언합니다.

Q3: 테스트 메소드의 반환형은 무엇인가요?
A3: 테스트 메소드는 `void` 반환형을 가져야 합니다.
예:
```java
@Test
void myTest() { ... }
```

Q4: 테스트 메소드 이름을 어떤 방식으로 작성해야 하나요?
A4: 테스트 메소드 이름은 가독성을 위해 보통 `test` 접두어를 쓰거나, 의미 있는 동작과 기대 결과를 담도록 작성합니다. 예:
- `testAddition()`
- `calculateSum_returnsCorrectResult()` (JUnit 5에서는 더 자유롭게 이름 작성 가능)

Q5: 예외가 발생해야 하는 테스트는 어떻게 작성하나요?
A5: JUnit 4에서는 `@Test(expected = Exception.class)` 속성을, JUnit 5에서는 `Assertions.assertThrows()` 메소드를 사용합니다.
예 (JUnit 4):
```java
@Test(expected = IllegalArgumentException.class)
public void testException() {
methodThatThrows();
}
```
예 (JUnit 5):
```java
@Test
void testException() {
Assertions.assertThrows(IllegalArgumentException.class, () -> methodThatThrows());
}
```

Q6: 테스트 메소드 내에서 어떤 구문을 사용하나요?
A6: 일반적으로 `Assertions` 클래스의 메소드를 사용하여 결과를 검증합니다. 예를 들어, `assertEquals()`, `assertTrue()`, `assertNull()` 등이 있습니다.

Q7: 테스트 실행 시 초기화나 정리 작업은 어떻게 하나요?
A7: 테스트 메소드 작성 시 `@BeforeEach`와 `@AfterEach` 어노테이션을 가진 메소드를 활용하여 각 테스트 이전과 이후의 준비 및 정리를 처리할 수 있습니다.

Q8: 테스트 메소드 예시 코드를 보여주세요.
A8:
```java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {

@Test
void addition_returnsCorrectSum() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result, "2 + 3 should equal 5");
}
}
```

---

요약:
- 테스트 메소드는 `@Test` 어노테이션을 붙인다.
- 반환형은 `void`이며, 접근제한자는 public일 필요 없음 (JUnit 5 기준).
- 테스트 내에서 `Assertions`를 통해 결과를 검증한다.
- 예외 테스트는 `expected` 속성이나 `assertThrows`를 사용한다.
JUnit에서 테스트 메소드를 작성하는 방법을 자세히 설명드리겠습니다.

JUnit은 자바에서 가장 널리 사용되는 단위 테스트 프레임워크로, 테스트 메소드를 정의하는 규칙과 어노테이션을 제공합니다.

1. 테스트 메소드 선언 테스트 메소드는 일반적으로 `public void` 형식으로 선언합니다.

반환값이 없어야 하며, 파라미터도 없어야 합니다.

예: ```java @Test public void myTestMethod() { // 테스트 코드 } ``` 단, JUnit 5 이상에서는 메소드 접근 제한자가 반드시 `public`일 필요는 없습니다.



2. @Test 어노테이션 사용 테스트 메소드를 식별하기 위해 메소드 위에 `@Test` 어노테이션을 반드시 붙여야 합니다.

JUnit은 이 어노테이션이 붙은 메소드를 자동으로 실행하여 테스트 여부를 판단합니다.



3. 단언문(Assertions) 사용 테스트 메소드 내에서 기대하는 결과와 실제 결과를 비교하기 위해 `assertEquals`, `assertTrue`, `assertFalse`, `assertThrows` 등과 같은 단언문을 사용합니다.

예: ```java @Test public void sum_shouldReturnCorrectResult() { int result = Calculator.sum(2,

3); assertEquals(5, result); } ```

4. 예외 테스트 특정 메소드가 예외를 발생시키는지 테스트할 경우, JUnit 4에서는 `expected` 속성을 사용하거나, JUnit 5에서는 `assertThrows` 메소드를 활용합니다.

예(JUnit

5): ```java @Test public void whenDivideByZero_thenThrowArithmeticException() { assertThrows(ArithmeticException.class, () -> Calculator.divide(10, 0)); } ```

5. 테스트 메소드 이름 테스트 메소드 이름은 테스트 목적이 명확하도록 짓는 것이 좋습니다.

보통 `동작_상태_결과` 형식으로 작성합니다.

예를 들어 `calculateSum_givenTwoIntegers_shouldReturnSum` 처럼 구체적으로 작명하는 것이 협업과 유지보수에 유리합니다.



6. 테스트 초기화 및 정리 테스트 메소드 실행 전후로 초기화나 정리 작업이 필요한 경우 `@BeforeEach` 와 `@AfterEach` (JUnit

5), 또는 `@Before` 와 `@After` (JUnit

4) 어노테이션을 활용해 각각 메소드를 작성할 수 있습니다.

이 부분은 테스트 메소드 작성에 보조적으로 지원됩니다.

JUnit에서 테스트 메소드는 `@Test` 어노테이션이 붙은 파라미터 없고 반환 타입이 void인 메소드로 작성하며, 메소드 내부에는 단언문을 사용해 기대 결과를 비교하는 코드가 들어갑니다.

이는 테스트 자동화와 검증을 원활하게 진행할 수 있게 해줍니다.

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