본문 바로가기
Study/Back

Sep.21.Thu.2023 Java 수업 19일차 JUnit

by Jobsoony 2023. 9. 21.
728x90
반응형
  • JUnit이란?
    자바 언어를 위한 테스트 프레임워크로 스프트웨어 개발 단위 테스트를 작성하고 검증하는데 사용한다.
    자동화된 테스트 케이스 실행과 테스트 결과 보고를 지원한다.
    품질을 향상시키고 버그를 빠르게 식별하는 데 도움을 준다.

!!! 많은 언어에서 변수 이름에 test가 들어가면 실행시키지 않고 정말 test로 돌려서 되도록 변수 이름에 쓰지 않는게 좋다.
 

  • 테스트케이스 (Test Case) : 특정 코드 또는 기능을 테스트하는 작은 단위로 각 테스트 케이스는 하나의 메서드로 표현하고 @Test 어노테이션을 사용해서 표시한다.
  • Assert메서드 : 테스트 결과를 검증하고 예상 결과와 실제 결과를 비교하고 차이가 있을 경우 테스트를 실패로 표시한다.
      assertEquasl(예상 결과, 실제 결과) : 두 결과 값이 동일한 경우 테스트 성공, 값의 타입이나 내용이 다르면 테스트 실패
    assertTrue(조건) : 조건이 true인지 확인하고 true라면 테스트 성공이고 false라면 실패이다.
    assertFalse(조건) : 조건이 false인지 확인하고 false라면 테스트 성공이고 true라면 실패이다.
    assertNotNull(객체) : 주어진 객체가 null이 아닌지 확인하고 null이 아니라면 테스트 성공이고 null이라면 테스트 실패이다.
    assertNull(객체) :  주어진 객체가 null인지 확인하고 null이라면 테스트 성공이고 null이 아니라면 테스트 실패이다.

 

  • Test Fixture(테스트 픽스쳐) : 테스트 케이스 실행을 위한 초기 설정이나 리소스를 준비하는 과정
      @Before @After : 어노테이션을 사용하여 각 테스트 케이스 전 후에 실행될 메서드를 정의할 수 있도록 지원하고,
      데이터 베이스 연결을 설정하거나 파일을 생성하는 작업을 수행할 수 있다.
  • Test Suite(테스트 스위트) : 여러 테스트 케이스를 묶어서 한 번에 실행하면 테스트 스위트 사용
     @RunWith(Suite.class) : 어노테이션을 사용해서 테스트 스위트 클래스를 정의하고 그 안에서 실행할 테스트 케이스 클래스를 지정한다.

 

<이클립스 JUnit 설정>

1. Junit을 설정하길 원하는 Java Project 이름 위에서 우클릭하고 맨 아래 Properties 클릭
2. 다섯 번째에 있는 1.> Java Build Path를 누르고 2.>상단에 Library를 클릭하면 나오는 3.>Classpath를 누르고 오른쪽 4.> Add Libraby 클릭!

3. Library Type에서 JUnit 누르고 Next

4. JUnit library version 선택한 뒤 Finish. 끝!

 
 

<JUnit 예시>

import static org.junit.Assert.*; // 굳이 import를 여러개 둘 필요 없이 * 하나로 바꿔준다.


import org.junit.Test;

public class JunitMain {
	// Test는 Main 메서드 만들지 않는다!

	@Test // 아래 객체 생성 후 클릭해서 JUnit import
	public void testStringEqual() {
		String expected = "Hello, World!";
		String actual = "Hellow, World!";
		assertEquals(expected, actual); // assertEquals import
	}
	
	@Test
	public void testStringInequal() {
		String expected = "Hello, Java!";
		String actual = "Hello, World!";
		assertNotEquals(expected, actual); // assertNotEquals import
	}
	
	
	@Test
	public void testArrayEqual() {
		int[] expected = {1,2,3};
		int[] actual = {1,2,3};
		assertArrayEquals(expected, actual); // 배열 비교 assertArrayEquals import
	}
	
	@Test
	public void testArrayInEqual() {
		int[] expected = {1,2,3};
		int[] actual = {3,2,1};
		assertArrayEquals(expected, actual); // 배열이 다르다는 것을 검증
	}
	
	@Test
	public void testDoubleEqual() {
		double expected = 0.1 + 0.2;
		double actual = 0.3;
		assertEquals(expected, actual, 0.001); // 부동소수점 비교(오차범위를 맨 위에 지정)
	}
	
	@Test
	public void testDoubleInEqual() {
		double expected = 0.1 + 0.2;
		double actual = 0.31;
		assertNotEquals(expected, actual, 0.001); // 부동 소수점이 다르다는 것을 검증(오차범위 지정)
	}
}
728x90
반응형