Java Unit Test 교육 내용 정리 (1)

2019. 12. 4. 21:58프로그래밍 언어/Java

Java Unit Test 교육

2019. 12. 4 (목) 13:30 ~ 17:30
남서울센터 6층 레츠런파크

수업자료
https://github.com/madosa/lecture-junit
lecture-junit/Java-Spring Unit Test.md 파일 확인


자바 테스트 자동화 관련 자료
https://www.slideshare.net/gyumee/ss-90206560

 


I. 요구사항

회원관리 프로그램
-회원 등록 / 조회 / 수정 / 삭제 기능 필요
- 회원 정보는 이름, 성별, 생년월일, 이메일, 연락처의 정보가 등록된다.
- 회원 조회는 리스트 조회와 상세 조회가 가능해야 한다.
- 회원 등록과 수정 시 이메일이 중복 되어서는 안된다.
- 회원 삭제는 한번에 한명의 회원만 삭제할 수 있다.

 


II. 개발 환경 구축

1. OpenJDK, IntelliJ IDEA, Docker, MySQL 설치

1) OpenJDK 설치
https://parkgaebung.tistory.com/10

2) IntelliJ IDEA
https://jwprogramming.tistory.com/99

3) Docker 설치
https://parkgaebung.tistory.com/11

 

4) Docker - MySQL 컨테이너 생성

https://madosa.kr/61

 

a. 설정 파일 및 데이터가 저장될 폴더 생성

$ mkdir /Users/narae/mysql
$ cd /Users/narae/mysql
$ mkdir /Users/narae/mysql/lecture
$ cd /Users/narae/mysql/lecture
$ mkdir conf data
$ cd conf


b. my.cnf 파일에 아래의 내용을 쓰고 저장

$ vi my.cnf

# i (INSERT MODE)

[client] 
default-character-set=utf8mb4
 
[mysql] 
default-character-set=utf8mb4 

[mysqld] 
collation-server = utf8mb4_unicode_ci 
init-connect='SET NAMES utf8mb4' 
character-set-server = utf8mb4

# esc (INSERT MODE 나가기)
# :wq (저장 후 종료)

 

c. container 생성 (MySQL 5.7.19 버전)

$ sudo docker create \	
--name lecture-mysql \					# docker container의 이름 지정
-p 43306:3306 \						# 포트 포워딩
-v /Users/narae/mysql/lecture/conf:/etc/mysql/conf.d \	# configure 파일 설정
-v /Users/narae/mysql/lecture/data:/var/lib/mysql \	# docker volume 지정
							# 데이터가 /Users/narae/mysql/lecture/data 폴더로 저장됨
-e MYSQL_ROOT_PASSWORD=admin12# \			# root 패스워드 설정
-e MYSQL_DATABASE=lecture \
-e MYSQL_USER=lecture \
-e MYSQL_PASSWORD=lecture12# \
mysql:5.7.19

 

d. container 실행

$ sudo docker start lecture-mysql
lecture-mysql

docker ps 명령어로 컨테이너가 실행되었는지 확인

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
0d02e7bd3559        mysql:5.7.19        "docker-entrypoint.s…"   7 hours ago         Up 3 seconds        0.0.0.0:43306->3306/tcp   lecture-mysql

lecture-mysql가 올라와있으면 성공!

 

 

 

2. DB Schema

1) MySQL Workbench 다운로드

자신의 운영체제에 맞는 버전으로 적당히 구글링해서 다운받습니다.

 

[OS X]
https://dev.mysql.com/downloads/workbench/5.2.html

[OS Catalina]
https://tech-cookbook.com/2019/10/08/using-mysql-workbench-on-macos-catalina-2019/
https://dev.mysql.com/downloads/workbench/

 

 

2) MySQL Connection 생성

Workbench를 실행 후 MySQL Connections 옆의 ⊕를 클릭합니다.

Connection Name: lecture
Hostname: 127.0.0.1
Port: 43306
Username: lecture
Password: lecture12#
Default Schema: lecture

위와 같이 입력해서 lecture 계정에 연결합니다.

 

비밀번호는 [Password] - [Store in Keychain ...] 클릭 후

위의 1.4.c 에서 지정한 lecture 계정의 비밀번호 (lecture12#)를 입력 합니다.

 

하단 [Test Connection] 클릭 후 위와 같은 메시지가 뜬다면 OK 눌러 연결 설정을 저장합니다.

 

Connection Name: lecture-root
Hostname: 127.0.0.1
Port: 43306
Username: root
Password: admin12#
Default Schema: lecture

그리고, 위와 같은 방법으로 이번에는 root 계정을 연결합니다.

(MySQL Connections 옆 ⊕ 클릭 ~ Test Connection 확인 후 연결 설정 저장까지)

 

 

3) 권한 설정

위에서 만든 lecture-root로 들어갑니다.

 

Login Name: lecture
Limit to Hosts Matching: localhost
Password: lecture12#
Confirm Password: lecture12#

좌측 [MANAGEMENT] - [Users and Privileges] - 하단 [Add Account] 버튼 - [Login] 탭에서 위와 같이 입력합니다.

 

[Administrative Roles] 탭에서 DBA 옆의 체크박스를 눌러 DBA 역할을 부여합니다.

 

[Schema Privileges] 탭에서 [Add Entry...] 버튼을 누릅니다.

 

[Selectec Schema] 옵션 선택후 [lecture]로 설정한뒤 확인

 

[Select "ALL"] 을 눌러 접근 권한을 주고,

[GRANT OPTION] 옆의 체크박스도 눌러 모든 권한을 준 뒤 [Apply]를 눌러 적용합니다.

 

 

4) 테이블 생성

[lecture 연결] - [Schemas] 탭 - [lecture - Tables] 에서 아래 쿼리문을 붙여넣고 번개모양 아이콘을 눌러 테이블을 생성합니다.

# member
CREATE TABLE `member` (
  `memberid` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '회원 ID',
  `membername` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '회원 이름',
  `gender` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '성별',
  `dateofbirth` int(8) NOT NULL COMMENT '생년월일',
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '이메일',
  `mobile` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '서비스 이름',
  `createdate` datetime NOT NULL COMMENT '등록일시',
  `modifydate` datetime NOT NULL COMMENT '최종 수정일시',
  PRIMARY KEY (`memberid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='회원 테이블';

# seq_member
CREATE TABLE `seq_member` (
  `seq` bigint(20) NOT NULL COMMENT '이미지 시퀀스 번호',
  PRIMARY KEY (`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='멤버 시퀀스 테이블';

# Init seq_member
INSERT INTO `seq_member` (`seq`)
VALUES (1);

하단에 초록불이 들어왔다면 성공입니다.

 


 

 

관련 포스트

Java Unit Test 교육 내용 정리 (1)

Java Unit Test 교육 내용 정리 (2)

Java Unit Test 교육 내용 정리 (3)

 

참고

tech-wiki : 공통 라이브러리 개발