Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기 N
    • 부스트캠프
    • visionOS
    • iOS N
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 알고리즘
  • if let
  • boj
  • swift
  • 백준
  • Concurrency
  • 티스토리챌린지
  • ios
  • Git
  • Swift5.7
  • AVAudioSession
  • 소프트웨어공학
  • 소프트웨어 공학
  • AutoLayout
  • Optional
  • jekyll
  • Animation
  • SwiftUI
  • CS
  • avaudiosessionportdescription
  • 오블완
  • image
  • 모듈화
  • MVC
  • constraint
  • 소프트웨어 테스트
  • Python
  • guard
  • 부스트캠프
  • ImageResource

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[소프트웨어 공학] JUnit
CS

[소프트웨어 공학] JUnit

2022. 10. 10. 12:10
JUnit 이란?
자바 프로그램의 
단위 테스트 프레임워크
  • 어노테이션으로 쉽고 간결한 테스트 코드
  • 테스트를 위해 코드에 출력문을 삽입할 필요 없음

예시

  • src/main/java(kr.se) 폴더에서 Calc 클래스 생성 -> File -> New -> Class 선택
package kr.se;
public class Calc { //Calc.java
  private int res=0;
  public void add(int x, int y) { res=x+y; }
  public void sub(int x, int y) { res=x-y; }
  public int getResult( ) { return res; }
}
  • src/test/java(kr.se) 폴더에서 CalcTest 클래스 생성 -> Flie -> New -> JUnit Test Case 선택
package kr.se;
import static org.junit.Assert.*; 
import org.junit.Before; 
import org.junit.Test;
import org.junit.After;

public class CalcTest {
  private Calc calc;

  @Before
  public void setUp( ) throws Exception // 1. Arrange(준비), fixture
    { calc = new Calc( ); }
  @Test
  public void testAdd( ) throws Exception // 2. Act(동작) & Assert(확인)
    { calc.add(20, 10); assertEquals(30, calc.getResult( )); }
  @Test
  public void testSub( ) throws Exception // 3 Act(동작) & Assert(확인)
    { calc.sub(20, 10); assertEquals(10, calc.getResult( )); }
  @After
  public void tearDown( ) { } // 4. Teardown(해체 종료)
}

 

동일 패키지

  • 동일 패키지에 애플리케이션 코드와 테스트 코드 생성
    • public 메소드 뿐만 아니라 protected 메소드도 테스트 가능
  • 애플리케이션, 테스트 코드가 생성된 폴더는 다름 (/src/main, /src/test)
    • 애플리케이션 코드를 분리하여 배포하기 용이

 

테스트 코드 실행

  • Run As -> JUnit Test
    • Failure: 테스트 코드의 단정문이 실패했을 때 발생
    • Error: 테스트 코드를 실행할 때 전혀 예기치 않은 곳에서 예외가 발생했을 때 발생 ex) ArithmeticException (divided by 0)

  • 강제적인 예외 발생 여부에 대한 테스트
    • @Test(expected=InvalidArgumentException.class)

  • 입출력에 대한 인자화된 테스트
    • 테스트에서 여러 조건 및 결과(객체/배열 컬렉션) 적용
    • @RunWith(Parameterized.class), @Parameter

  • 여러 테스트 클래스의 테스트 메소드 한 번에 실행
    • 스위트 클래스 생성(New > JUnit Test Suite)
    • @RunWith(Suite.class), @SuiteClasses

  • 특정 범주의 테스트만 수행
     
    • 범주별로 테스트 메소드 분류 (범주화)
    • @RunWith(Categories.class), @Category

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

[컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식  (1) 2024.03.12
[소프트웨어 공학] 블랙박스 테스트-1  (1) 2022.11.07
[소프트웨어 공학] 소프트웨어 테스트 - 2  (1) 2022.10.03
[소프트웨어공학] 소프트웨어 테스트 - 1  (0) 2022.10.03
[소프트웨어 공학] 디자인 패턴 Design Pattern  (0) 2022.09.26
    'CS' 카테고리의 다른 글
    • [컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식
    • [소프트웨어 공학] 블랙박스 테스트-1
    • [소프트웨어 공학] 소프트웨어 테스트 - 2
    • [소프트웨어공학] 소프트웨어 테스트 - 1
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바