Spring 개발 교육

ApexSoft

Day 2 - Test, Git, SpringBoot

Day 1 - Review

퇴근을 빨리 하자

 

Day 1 - Review

퇴근을 빨리 하자


간접화


객체에게 데이터를 요구하지 말고

작업을 요청하라

목    차

1. Test

 

2. Git

 

3. Initial SpringBoot

Test

퇴근은 빨리 했는데

문제 생겨서 연락 받고

원격으로 일하면 행복할까?

 

Test

퇴근은 빨리 했는데

문제 생겨서 연락 받고

원격으로 일하면 행복할까?

 

발 뻗고 쉬려면 Test

Test

단위 테스트

 

통합 테스트

 

인수 테스트

Test

단위 테스트: 단위 로직

 

통합 테스트: 컴포넌트 간 연동

 

인수 테스트: 실제 사용자 환경

Test

단위 테스트: JUnit


통합 테스트: SpringMVCTest


인수 테스트: Selenium(Selenide)

Test - 실습

JUnit 실행 및 확인

    자동 생성된 Library, LibraryTest 활용

    동영상: https://youtu.be/kEF0vK8y8fk

 

Gradle 테스트 실행 및 확인

    동영상: https://youtu.be/M-Pn_ipy29k

Git Commit

.gitignore 편집

    .idea, .gradle, build/ 추가

 

Library, LibraryTest 삭제

 

git add .

Git Commit

git cim '50자 이내 제목

빈 행

본문 72자 넘으면 줄 바꿈

어떻게 보다는 무엇과 왜를 설명'

 

https://github.com/weirdmeetup/translate/blob/master/articles/2014-08-31-git-commit.md#훌륭한-git-커밋-메시지의-일곱-가지-규칙

 

Git Commit & Push

git cim 'Dev ready

 

.gitignore 정비

불필요한 파일 삭제'

 

그래프 확인 (master 브랜치 전진)

 

git psom (git push origin master)

Git Merge

Git Merge

Git Merge

(master 브랜치 상에서) git merge feature

Merge comit(C5)이 추가되면서 합쳐짐

Git Rebase

Git Rebase

Git Rebase

원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)

Git Rebase

원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)

(feature 브랜치에서) git rebase master

Git Rebase

원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)

C3, C4, C10 커밋이 사라지고, C3', C4', C10'이 새로 생겨남

Git 실습 - merge

master 브랜치에서 git co -b 'subtract' (git co는 git commit의 alias)

 

src/main/java/day02 패키지 생성

Algebra에

    public int subtract (int a, int b) {} 구현

 

src/test/java/day02 패키지 생성

day02.AlgebraTest 클래스 생성

AlgebraTest에

    @Test public int subtractTest() {} 구현

Git 실습 - merge

Test 통과하면 

git add .

git cim 'subtract에서 뺄셈 추가' (git cim은 git commit -m 의 alias)

그래프 확인 (subtract 브랜치 전진)

git co master

git merge subtract

그래프 확인 (master에 merge commit 이 생기면서 subtract와 합쳐지고 subtract 보다 하나 더 전진)

 

git psom

git branch -d subtract (subtract 브랜치 삭제)

Git 실습 - merge

master 브랜치에서

 

subtract(int a, int b) 를 subtract(int c, int d)로 수정 

git add .

git cim 'master에서 뺄셈 파라미터 c, d로 변경'

그래프 확인 (master 브랜치 전진)

 

github의 master 브랜치에서 subtract(int m, int n) 수정

커밋 메시지: 깃허브에서 뺄셈 m, n으로 변경 입력 후 commit 클릭

Git 실습 - merge

git fom (git fetch origin master의 alias)

그래프 확인 (master와 origin/master가 나뉘어져 있고, origin/master가 하나 앞섬)

git merge origin/master

[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]

(git st로 확인해보고 빨간색 있으면) git add .

git commit

그래프 확인 (master에 merge commit 이 추가되면서 합쳐지고,

master가 origin/master 보다 하나 앞섬)

 

git psom

Git 실습 - rebase

master 브랜치에서 git co -b 'add'

 

Algebra에

    public int add(int a, int b) { return a + b; } 구현

 

AlgebraTest에

    @Test public void addTest() { ... } 구현

Git 실습 - rebase

Test 통과하면

git add .

git cim 'add에서 덧셈 추가'

그래프 확인 (add 브랜치 전진)

 

git co master

master 브랜치의 Algebra에서

public int add(int c, int d) { return c + d; } 작성

git ciam 'master에서 덧셈 추가 c, d' (git ciam == git add . + git cim)

그래프 확인 (master가 add와 나뉘어져서 전진)

Git 실습 - rebase

git co add (add 브랜치로 이동, 노란 태그(HEAD)가 add 브랜치로 이동)

git rebase master (add 브랜치의 base를 master로 재(re)지정)

[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]

(git st로 확인해보고 빨간색 있으면) git add .

git rb --continue

그래프 확인 (꺾임 없이 하나의 선 상에서 add가 master보다 하나 앞섬)

git co master 한 후 git merge add

그래프 확인 (master가 동일선 상에서 add보다 하나 뒤에 있었으므로, 별도의 merge commit이 생기지 않고 master가 add의 위치로 이동)

 

git psom 한 후 git branch -d add

Git 실습 - rebase

master 브랜치의 Algebra에서 add(int x, int y)로 수정

git ciam '덧셈 x, y 로 변경' 

 

github의 master에서 add(int m, int n)로 수정 후

    커밋 메시지: 깃허브에서 덧셈 파라미터 m, n 으로 수정

    commit 클릭

 

Git 실습 - rebase

git fom

그래프 확인 (master와 origin/master가 나뉘어져 있고, origin/master가 하나 앞섬)

git rebase origin/master (master 브랜치의 base를 origin/master로 재(re)지정)

[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]

(git st로 확인해보고 빨간색 있으면) git add .

git rb --continue

그래프 확인 (같은 선 상에서 master가 origin/master보다 하나 앞섬)

 

git psom

Git Merge vs Rebase

merge는 새로운 merge commit 한 개만 새로 생성하면서 병합

    feature 브랜치 상에서의 commit이 그대로 남으므로

    feature 브랜치의 꺾임선이 그대로 남음

 

 

Git Merge vs Rebase

merge는 새로운 merge commit 한 개만 새로 생성하면서 병합

    feature 브랜치 상에서의 commit이 그대로 남으므로

    feature 브랜치의 꺾임선이 그대로 남음

 

rebase는 feature 브랜치 상에 있던 모든 commit을 없애고

master 브랜치 상에 새로 생성

    feature 브랜치 상에서의 commit이 모두 소멸되므로

    feature 브랜치의 꺾임선도 사라지고 master 만 남음

Git Merge vs Rebase

merge는 새로운 merge commit 한 개만 새로 생성하면서 병합

    feature 브랜치 상에서의 commit이 그대로 남으므로

    feature 브랜치의 꺾임선이 그대로 남음

 

rebase는 feature 브랜치 상에 있던 모든 commit을 없애고

master 브랜치 상에 새로 생성

    feature 브랜치 상에서의 commit이 모두 소멸되므로

    feature 브랜치의 꺾임선도 사라지고 master 만 남음

 

시각적으로 깔끔한 브랜치 유지를 위해 Rebase를 선호

Git Merge vs Rebase

merge vs rebase 필독 한글 자료

http://dogfeet.github.io/articles/2012/git-merge-rebase.html

Rebase 주의 사항

https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview

영어지만 그림과 사례가 더 간단함

 

https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-Rebase-%ED%95%98%EA%B8%B0#Rebase-의-위험성

 

git push로 외부로 보낸 커밋이 있는 브랜치 상에서

git rebase '다른브랜치' 금지

Git 간단 WorkFlow

master 브랜치 하나로만 rebase로 작업

 

소스 작업

git add .

git cim '어쩌구'

git fom (git fetch origin master)

git rbom (git rebase origin/master)

[충돌 시 해소] - git add . - git rb --continue

git psom (git push origin master)

Git WorkFlow

복잡하고 체계적으로 가려면

 

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

 

https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/

 

Initial SpringBoot

Spring Initialzr로 프로젝트 생성

 

기본 컴포넌트 선택

 

Gradle 프로젝트 import

 

Spring Application 실행

Initial SpringBoot

Day 2 End

Q&A

Day 3

Hello SpringBoot

SpringBoot 환경 설정

Logging, Debugging

도메인, 서비스, 컨트롤러

Spring 개발 순서

Springboot-dev-primer-apexsoft-02

By Myung Woon, Oh

Springboot-dev-primer-apexsoft-02

스프링 웹 개발 기초 교육 - day 2

  • 817