[TDD 텍스트 게시판] 1단계, 2단계

이다혜·2023년 10월 30일
0

Java 텍스트 게시판

목록 보기
15/17

github flow와 TDD방식을 결합하여 텍스트 게시판을 다시 구현해 보자

1. 이슈 생성

2. 로컬 저장소 최신화 및 새 브랜치 생성 후 이동

3. 1,2,3단계 기능 작업

AppTest.java

public class AppTest {
    @Test
    @DisplayName("종료를 누르면 꺼진다.")
    void t1() {
        Scanner scanner = TestUtil.genScanner("""
                종료
                """.stripIndent()
        );
        new App(scanner).run(); 

        scanner.close();

        System.out.println("프로그램이 종료되었습니다.");
    }
    @Test
    @DisplayName("등록을 입력하면 명언과 작가를 입력받는다.")
    void t2() {
        Scanner scanner = TestUtil.genScanner("""
                등록
                현재를 사랑하라.
                작자미상
                종료
                """.stripIndent()
        );
        new App(scanner).run(); 

        scanner.close();

        System.out.println("프로그램이 종료되었습니다.");
    }
    @Test
    @DisplayName("등록을 완료하면 '1번 명언이 등록되었습니다.'를 출력한다.")
    void t3() {
        ByteArrayOutputStream byteArrayOutputStream = TestUtil.setOutToByteArray();

        Scanner scanner = TestUtil.genScanner("""
                등록
                현재를 사랑하라.
                작자미상
                종료
                """.stripIndent()
        );
        new App(scanner).run(); 
        scanner.close();

        String result = byteArrayOutputStream.toString();

        assertThat(result).contains("1번 명언이 등록되었습니다.");
        TestUtil.clearSetOutToByteArray(byteArrayOutputStream);

        System.out.println("프로그램이 종료되었습니다.");
    }
}

App.java

public class App {
    private final Scanner scanner;
    public App(Scanner scanner) {
        this.scanner = scanner;
    }

    public void run() {
        System.out.println("=== 명언 앱 ===");
        while(true) {
            System.out.println("명령) ");
            String cmd = scanner.nextLine();

            if(cmd.equals("종료")) {
                break;
            } else if(cmd.equals("등록")) {
                System.out.print("명언 : ");
                String content = scanner.nextLine();

                System.out.print("작가 : ");
                String author = scanner.nextLine();

                System.out.println("1번 명언이 등록되었습니다.");
                break;
            }
        }
    }
}

new App(scanner).run() : 스캐너를 키보드로 입력받는 스캐너 말고 만들어서 집어넣는 방식으로 바꾼다.
ByteArrayOutputStream byteArrayOutputStream = TestUtil.setOutToByteArray(); : 출력 값들이 화면에 출력되는 것이 아니라 byteArrayOutputStream에 차곡차곡 쌓인다.

4. add, commit, push

5. PR(pull request) 생성

  • 투표, 통과

6. PR 반영 (squash merge)

7. 원격지에서 브랜치 삭제

8. 이슈 닫기

9. git checkout main

10. git pull origin main

11. git branch -D e/4

12. git fetch --prune

0개의 댓글