Spring Test Code

iy·2024년 1월 17일
0

Spring입문

목록 보기
1/5

TestCode

🐛버그(bug)

: 소프트웨어가 예상하지 못한 결과를 내는 것

  • 소스코드나 설계 과정에서의 오류 때문에 발생
  • 사용자에게 큰 불편함을 주고 그로 인해 회사에 악영향을 줌
    - 소프트웨어는 시간이 지난다고 자동으로 치유되는 로직이 없음

이러한 이유때문에 개발 코드 배포 전 버그를 최대한으로 많이 찾아내야 함!

  • "테스트"

테스트 방법

  1. 블랙박스 테스팅
    : 소프트웨어 내부 구조나 동작 원리를 모르는 상태 즉 웹 서비스의 사용자 입장에서 동작을 검사하는 방법
  • 장점
    - 누구나 테스트가 가능함
  • 단점
    - 기능이 증가될 수록 테스트의 범위가 증가
    - 시간이 갈수록 테스트하는 사람이 계속 늘어나야함
    - 테스트하는 사람에 따라 테스트 퀄리티 차이가 남
  1. 개발자 테스트

    개발자가 직접 본인이 작성한 코드를 검증하기 위해 테스트 코드 작성

  • 장점
    - 빠르고 정확한 테스트가 가능함(예상 동작 vs 실제 동작)
    • 테스트 자동화가 가능함
      • 배포 절차 시 테스트 코드가 수행되어 동작을 검증
    • 리팩토링이나 기능 추가를 할 때 더욱 편리함
  • 단점
    - 개발 시간이 오래 걸림
    - 테스트 코드를 유지보수하는 비용
    --> 하지만 Spring에선 테스트 코드 작성 환경을 제공해줌(JUnit)

JUnit이란 자바 프로그래밍 언어 용 단위 테스트 프레임워크!
1. 테스트 코드가 필요한 파일 내에서 마우스 오른쪽 클릭 후 "Generate..."클릭
2. "Test..." 클릭
3. OK 눌러서 생성

프로그래머스 입문 문자열 두배 문제로 테스트 코드 작성을 해보겠다.

public class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        for(int i = 0;i < numbers.length ; i++)
            answer[i] = numbers[i] * 2;
        return answer;
    }
}

위에 테스트 코드 설정을 해주면 파일 경로도 똑같이 만들어짐

이후에 코드를 작성해줬다.

완전 간단하게 테스트 코드 작성해보기
1. 테스트할 Solution 클래스의 생성자 호출
2. 테스트할 배열 선언
3. 실제로 나올 결과를 Solution 클래스에 solution 메소드를 이용해 값을 대입해줌
4. 예상되는 결과 배열로 선언해주고
5. 두 배열이 일치하는지 판단하기 위해 Assertions.assertArrayEquals()를 이용해 예상되는 결과와 실제로 나온 값을 비교해준다.
(6. 눈으로 보기 편하게 결과를 출력문 이용해 출력한다.)
7. 메소드 옆 실행 버튼으로 테스트 해보고 성공인지 확인한다.

Assertions.assertArrayEquals() or Assertions.assertEquals()

public abstract class Assert {

	/**
	 * Assert a boolean expression, throwing an {@code IllegalStateException}
	 * if the expression evaluates to {@code false}.
	 * <p>Call {@link #isTrue} if you wish to throw an {@code IllegalArgumentException}
	 * on an assertion failure.
	 * <pre class="code">Assert.state(id == null, "The id property must not already be initialized");</pre>
	 * @param expression a boolean expression
	 * @param message the exception message to use if the assertion fails
	 * @throws IllegalStateException if {@code expression} is {@code false}
	 */
	public static void state(boolean expression, String message) {
		if (!expression) {
			throw new IllegalStateException(message);
		}
	}
    
 // boolean 표현식을 나타냄

Assertions.assertEquals()

  • 두 값을 비교해 일치하는지 판단

Assertions.assertArrayEquals()

  • 두 배열을 비교해 일치하는지 판단

😂 지금은 간단한 테스트 코드를 겨우 작성할 수 있는 실력이라 다음에 프로젝트 때 테스트 코드를 작성할 일이 생기면 더 자세하게 설명해보겠다.


Java-Assert

JUnit-Assertions

0개의 댓글