[우아한테크코스] 1일차 TIL

1 minute read

git 명령어

오랜만에 페어프로그래밍 덕분에 명령어를 사용한 김에 명령어 정리 :)

  • 모든 항목을 스테이지에 업로드: git add .
  • 원하는 항목을 스테이지에 업로드: git add 파일위치
  • 커밋 메시지와 함께 커밋: git commit -m “원하는 메시지” (메시지 여러 줄에 하고 싶으면 따옴표 안 닫고 띄우기)
  • 푸시: git push remote이름 branch이름
  • 가장 최근 commit 취소: git reset HEAD^

JUnit

junit 4.4부터는 assert~~ 을 이용해 단위 테스트를 진행한다.
원치 않는 경우에 예외처리하는 테스트이다.

  • assertThat().contains()라면 포함하지 않는 경우
  • assertThat().containsExactly()라면 모든 것을 완벽히 포함하지 않는 경우
  • assertThat().isEqualTo()라면 일치하지 않는 경우

  • assertEquals(expected, actual)로 두 값이 다른 경우
  • assertFalse(expected.equals(actual))로 값이 같은 경우
  • assertTrue, assertNull, assertNotNull, assertSame …

올바르게 예외처리가 되는지 확인하는 방법

  1. 원하는 메시지가 올바르게 출력되는지
    assertThatThrownBy(() -> {
     // ...
    }).isInstanceOf(IndexOutOfBoundsException.class)
      .hasMessageContaining("Index: 2, Size: 2");
    
  2. 이러한 타입의 에러가 올바른 형식의 메시지와 함께 출력되는지
    assertThatExceptionOfType(IndexOutOfBoundsException.class)
      .isThrownBy(() -> {
       // ...
    }).withMessageMatching("Index: \\d+, Size: \\d+");
    

    \d는 \d를 올바르게 인식시키기 위한 표현, +는 0 이상의 정수를 표현하기 위한 정규표현식

test

  • @Test 어노테이션으로 주고, assert~~로 테스트
  • 테스트 코드에서 @BeforeEach 하면 모든 테스트가 실행되기 전 초기 설정
  • @ParameterizedTest 어노테이션의 경우 @ValueSource, @CsvSource 등으로 인자 전달
    @ParameterizedTest
    @ValueSource(strings = {"", "  "})
    void isBlank_ShouldReturnTrueForNullOrBlankStrings(String input) {
      assertTrue(Strings.isBlank(input));
    }
    
    @ParameterizedTest
    @CsvSource(value = {"test:test", "tEst:test", "Java:java"}, delimiter = ':')
    void toLowerCase_ShouldGenerateTheExpectedLowercaseValue(String input, String expected) {
      String actualValue = input.toLowerCase();
      assertEquals(expected, actualValue);
    }