테스트 

프로그램의 품질을 검증하는 것,

의도대로 프로그램이 잘 동작하는 지 확인하는 과정

 

테스트 보드 작성법

1. 예상 데이터 작성하기

2. 실제 데이터 획득하기

3. 예상 데이터와 실제 데이터 비교해 검증하기

 

@SpringBootTest

스프링부트와 해당 클래스를 연동해 테스트할 때 사용하는 어노테이션.

테스트 코드에서 스프링부트가 관리하는 다양한 객체를 주입받을 수 있습니다.

 

테스트 케이스의 트랜잭션 처리

테스트 시 데이터를 조회하는 것이 아닌 조작하는 작업을 했다면 테스트를 마치고 데이터를 롤백해야 한다. 

롤백하지 않으면 테스트 수행으로 조작된 데이터가 남아 문제를 일으킬 수 있다. 

롤백은 테스트 메서드 위에 @Transactional어노테이션을 붙여 해당 메서드를 트랜잭션 처리해주면 된다.

 

 


 

index()는 목록을 보여주는 메서드.

DB에 있는 데이터들이 전부 보여지는 게 예상 데이터

실제 데이터가 있는 articleService에서 가져와서

assertEquals로 비교

 

show()는 상세 페이지.

1페이지로 예상 데이터를 구성하면

id=1 title="가가가가" content="1111로 이루어져 있음 

성공 케이스를 먼저 실행해야 하기에 DB에서 맞는 데이터를 가져와서 예상 데이터에 삽입.

articleService에서 구성한 서비스에서 show()를 가져와서 비교

 

실패케이스는 예상 데이터를 null값으로 두고 실행

 

 

ArticleServiceTest.java
ArticleController.java

create()의 경우에는 컨트롤러에서 ArticleForm을 매개변수로 받아왔기때문에 여기서도 사용해줘야한다.

새로 생성하기 위해서는 dto를 엔티티로 변경하고 그 엔티티를 레포지토리에 저장한다.

 

 

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 15일차  (0) 2024.01.22
스프링부트 14일차  (0) 2024.01.20
스프링부트 12일차  (0) 2024.01.19
스프링부트 11일차  (0) 2024.01.18
스프링부트 10일차  (0) 2024.01.16

서비스

컨트롤러와 리파지터리 사이에 위치하는 계층, 서버의 핵심 기능(비지니스 로직)을 처리하는 순서를 총괄한다.

 

트랜잭션

모두 성공해야 하는 일련의 과정. 

쪼갤 수 없는 업무 처리의 최소 단위

 

@Service

해당 클래스를 서비스로 인식해 스프링 쿠즈에 서비스 객체를 생성.

 

@Transactional

해당 어노테이션이 선언된 메서드를 트랜잭션으로 묶는다. 

중간에 실패하면 롤백해 처음상태로 되돌아간다.

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 14일차  (0) 2024.01.20
스프링부트 13일차  (0) 2024.01.19
스프링부트 11일차  (0) 2024.01.18
스프링부트 10일차  (0) 2024.01.16
스프링부트 9일차  (0) 2024.01.15

REST : HTTP URL로 서버의 자원을 명시하고, HTTP메서드로 해당 자원에 대해 CRUD하는 것

API : 클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스

REST API : REST를 기반으로 API를 구현한 것, 클라이언트가 기기에 구애받지 않고 서버의 자원을 이용할 수 있을 뿐만 아니라 서버가 클라이언트의 요청에 체계적으로대응할 수 있어서 서버 프로그램의 재사용성과 확장성이 좋아집니다.

 

REST Controller

데이터를 반환한다.

normal Controller

뷰 페이지 반환

 

잘하다가 오류나서 구글링해봤는데 결국 해결못하고(17일) 오늘 보니까 dto에 getter가 없어서 발생한 오류였음(...)

 

ResponseEntity

REST의 컨트롤러의 반환형, REST API의 응답을 위해 사용하는 클래스, REST API요청을 받아 응답할 때 이 클래스에 HTTP상태코드, 헤더, 본문을 실어보낼 수 있습니다.

 

HttpStatus

HTTP상태 코드를 관리하는 클래스, 다양한 enum타입과 관련한 메서드를 가진다.

enum타입은 열거형, 여러 상수로 이루어진 고정 집합을 가진다. 

열거형이름.상수

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 13일차  (0) 2024.01.19
스프링부트 12일차  (0) 2024.01.19
스프링부트 10일차  (0) 2024.01.16
스프링부트 9일차  (0) 2024.01.15
스프링부트 8일차  (0) 2024.01.14

REST API

서버 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식.

클라이언트에서 정보를 요청하면 서버는 특정 기기에 종속되지 않고 모든 기기에서 통용할 수 있는 JSON 데이터를 응답으로 보냅니다.

 

JSON

키 와 값, 쌍으로 이루어진 속성으로 구성.

{
    "키1": 값,
    "키2": 값,
    "키3": 값
}

 

Talend API Tester

HTTP 및 REST API를 쉽게 호출, 검색 및 테스트할 수 있습니다.

https://chromewebstore.google.com/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?hl=ko&pli=1

 

Talend API Tester - Free Edition

Visually interact with REST, SOAP and HTTP APIs.

chrome.google.com

 

가짜 API를 사용해 무료로 테스트를 할 수 있다.

https://jsonplaceholder.typicode.com

 

JSONPlaceholder - Guide

Guide Below you'll find examples using Fetch API but you can JSONPlaceholder with any other language. You can copy paste the code in your browser console to quickly test JSONPlaceholder. Getting a resource fetch('https://jsonplaceholder.typicode.com/posts/

jsonplaceholder.typicode.com

HTTP 상태 코드

HTTP메시지

시작라인 - HTTP요청 또는 응답 내용이 있습니다. 시작 라인은 항상 한 줄로 끝납니다.

헤더 - HTTP전송에 필요한 부가정보가 있습니다.

빈 라인 - 헤더의 끝을 알리는 빈 줄로, 헤더가 모두 전송되었음을 알립니다.

본문 - 실제 전송하는 데이터가 있습니다.

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 12일차  (0) 2024.01.19
스프링부트 11일차  (0) 2024.01.18
스프링부트 9일차  (0) 2024.01.15
스프링부트 8일차  (0) 2024.01.14
스프링부트 7일차  (0) 2024.01.12

xampp는 통합 설치 프로그램

https://www.apachefriends.org/download.html

 

Download XAMPP

Includes: Apache 2.4.58, MariaDB 10.4.32, PHP 8.0.30 & PEAR + SQLite 2.8.17/3.38.5 + multibyte (mbstring) support, Perl 5.34.1, ProFTPD 1.3.6, phpMyAdmin 5.2.1, OpenSSL 1.1.1w, GD 2.2.5, Freetype2 2.4.8, libpng 1.6.37, gdbm 1.8.3, zlib 1.2.11, expat 2.0.1,

www.apachefriends.org

 

버전의 가장 최신 버전을 설치했다.

필요한 것만 설치했다. 

 

 

설치완료하고 Apache start버튼을 누르고 

브라우저에서 localhost 입력

 

localhost

 

페이지가 나타나면 xampp로 돌아가면

port에 80, 443이 뜨면 정상적으로 실행된 것.

 

다운받은 위치\htdocs가 홈디렉토리.

이 위치에 HTML, 이미지 파일을 넣어두면 localhost에서 나타난다.

 

php파일은 vsc에서 작성하기로 했다.

테스트를 해보기 위해 test.php파일을 만들었다.

위에서 얘기한 홈디렉토리에 파일을 생성했다.

<?php
echo '웹서버 테스트<br/>';
echo 'php 실행 테스트';

저장하고 브라우저에서 localhost/test.php로 이동하면

 

정상적으로 나타난 것을 알 수 있다.

 

 

 


<참고 사이트>

https://ezphp.net/docs/apm_for_win/

 

윈도우용 APM 설치 · PHP

## 윈도우용 통합 설치 프로그램

ezphp.net

https://teserre.tistory.com/12

 

Windows10에 XAMPP 설치 & 사용하기 (Apache, MySql, PHP)

웹 서비스는 운영을 하던, 개발을 하던 웹 서버가 작동을 하고 있어야 사용이 가능하다. 그래서 테스트를 위해 웹 서버를 설치해야 하는데 개별적으로 설치하기는 귀찮다. 그래서 한번에 설치

teserre.tistory.com

 

'Android Studio > DB접속 어플' 카테고리의 다른 글

앱 이름 변경하기  (0) 2024.01.11

 

로깅 레벨 7단계.

TRACE(1)

DEBUG(2)

INFO(3)

WARN(4)

WRROR(5)

FATAL(6)

OFF(7)

출력 레벨을 설정하면 해당 레벨 이상의 로그가 출력됩니다. 

 

 

JPA로깅 설정

#JPA logging setting
#print query Debug level
logging.level.org.hibernate.SQL=DEBUG
#println query
spring.jpa.properties.hibernate.format_sql=true
#show parameter
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

 

#CREATE
CREATE TABLE 테이블 명 (
	속성명1 자료형,
    속성명2 자료형,
    속성명3 자료형,
    PRIMARY KEY(기본키)
);


#INSERT
INSERT 
INTO
	테이블 명
    (속성명1, 속성명2, 속성명3, ...)
VALUES
	(값1, 값2, 값3, ...);
    
#SELECT
SELECT
	속성명1, 속성명2, 속성명3
FROM
	테이블명
WHERE
	조건;
    
 
#UPDATE
UPDATE
	테이블명
SET
	속성명=변경할 값
WHERE
	조건;
    
#DELETE
DELETE
	테이블명
WHERE
	조건;

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 11일차  (0) 2024.01.18
스프링부트 10일차  (0) 2024.01.16
스프링부트 8일차  (0) 2024.01.14
스프링부트 7일차  (0) 2024.01.12
스프링부트6일차  (0) 2024.01.11

데이터 삭제하기

 

클라이언트가 서버로 삭제 요청

서버는 DB에서 해당 데이터를 찾아 삭제

클라이언트를 리다이렉트된 페이지로 보낸다.

 

RedirectAttributes

리다이렉트 페이지에서 사용할 일회성 데이터를 관리하는 객체.

addFlashAttribute()메서드로 리다이렉트된 페이지에서 사용할 일회성 데이터를 등록할 수 있다.

 

articleRepository.delete()

DB에 접근해 데이터를 삭제할 때 사용하는 메서드

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 10일차  (0) 2024.01.16
스프링부트 9일차  (0) 2024.01.15
스프링부트 7일차  (0) 2024.01.12
스프링부트6일차  (0) 2024.01.11
1주차 필수 미션 : 도서 리뷰작성하기  (1) 2024.01.11

폼 데이터 전달 ->   DTO를 엔티티로 변환 -> DB 갱신 -> 리다이렉트

 

 

HTTP메서드

 

POST - 데이터 생성 요청

GET - 데이터 조회 요청

PATCH(PUT) - 데이터 수정 요청

DELETE  - 데이터 삭제 요청

 

<form>태그 GET과 POST메서드만 지원

action속성 - 폼 데이터를 어디로 보낼 지 url을 지정

method속성 - 어떻게 보낼지 방식을 지정

'코딩자율학습단 > 스프링부트' 카테고리의 다른 글

스프링부트 9일차  (0) 2024.01.15
스프링부트 8일차  (0) 2024.01.14
스프링부트6일차  (0) 2024.01.11
1주차 필수 미션 : 도서 리뷰작성하기  (1) 2024.01.11
스프링부트 5일차  (1) 2024.01.11

+ Recent posts