궤도

[Spring] [면적면적[17]] 테스트용 DB(H2) 분리 본문

💻 현생/📕 면적면적(스프링 실습)

[Spring] [면적면적[17]] 테스트용 DB(H2) 분리

영이오 2021. 12. 8. 18:57

북적북적의 백엔드를 클론하고 있다.

 

Github

 

build.gradle

plugins {
	id 'org.springframework.boot' version '2.5.2'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
	id 'java'
}

group = 'jpa'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
	all {
		exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-security'
	implementation 'org.springframework.boot:spring-boot-starter-log4j2'
	implementation 'io.jsonwebtoken:jjwt:0.9.1'
	implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-aws', version: '2.2.6.RELEASE'
	implementation 'org.mapstruct:mapstruct:1.4.2.Final'
	annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
	implementation 'com.querydsl:querydsl-jpa'
	implementation 'org.projectlombok:lombok:1.18.18'
	runtimeOnly 'mysql:mysql-connector-java'
	implementation 'com.googlecode.json-simple:json-simple:1.1.1'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.security:spring-security-test'
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}

sourceSets {
	main.java.srcDir querydslDir
}

configurations {
	querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}

test {
	useJUnitPlatform()
}

 

 

src/main/resources/application.yml

aladin:
  url: http://www.aladin.co.kr/ttb/api/ItemLookUp.aspx?ttbkey=비밀키&itemIdType=ISBN13&output=js&Version=20131101&ItemId={isbn}
naver:
  id: 아이디
  secret: 비번
secret:
  key: 비번
cloud:
  aws:
    credentials:
      access-key: 엑세스 키
      secret-key: 시크릿 키
    s3:
      bucket: 버킷 이름
    region:
      static: 지역
    stack:
      auto: false
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3305/데베?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: 비번
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    open-in-view: false
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        format_sql: true
        show-sql: true
#logging:
#  level:
#    org:
#      hibernate:
#        type:
#          descriptor:
#            sql: trace
server:
  servlet:
    encoding:
      force-response: true
logging:
  level:
    com:
      amazonaws:
        util:
          EC2MetadataUtils: error

따라하고자 하신다면 글을 끝까지 읽은 후 따라하세요

 

프로젝트 이름을 대충 짓지 말걸...이라는 생각을 하는 요즘이다.

아무튼 오늘은 실제 DB와 테스트 DB를 분리할 것이다.

 

왜냐하면 내가 몇주전에

이런 글을 봤기 때문이다. 출처

 

지금까지 난 불연속하게 커지는 pk 값을 보며 아~ 연속이 아니라 그냥 증가만 하면 되는구나~ 하고 그러려니 했었다.

이제 제발 모든 것에 의구심을 품는 삶을 살아보자.

 

그럼 이제 고민을 해보자. 별도의 DB 또는 H2 둘 중 어떤 것을 테스트용 데이터베이스로 할까?

 

H2

https://taes-k.github.io/2021/04/05/spring-test-isolation-datasource/

 

Spring H2를 이용한 독립 테스트환경 구축

독립된 테스트 전용 DB 구성의 필요성 통합테스트 혹은 DB 데이터를 사용하는 테스트를 수행할때, 개발환경 전용 DB를 사용한다 하더라도 아래와 같은 문제가 발생 할 수 있습니다. 여러 개발자들

taes-k.github.io

https://re-coder.tistory.com/5

 

Spring Boot test에서 H2 In memory 설정하기

우선 설정을 위해서 src/test 에서 resources 디렉토리를 추가해 주고 application.yml도 추가해준다. 이렇게 추가된 application.yml은 test시 main directory 하위에 있는 application.yml보다 우선권을 가지..

re-coder.tistory.com

 

 

장점 : 인메모리 DB라 좀 빠른가?

단점 : 인메모리 DB(=휘발성)이라 테스트 데이터 쿼리를 넣어둬야 한다.

 

원래 쓰던 테스트 유저의 데이터가 소올직히 말해서 못해먹을만큼 많은 건 아니긴 했었다...

하려면 할 순 있는데 흠...그렇게 정리해두면 테스트 유저에 어떤 데이터가 들어가 있는지도 볼 수 있고 좋긴 하겠는데...

 

또다른 MySQL

 

왜 다른 DB가 아니고 MySQL이냐면 다른거 안써봐서 시간이 좀 걸리지 않을까 싶다.

 

장점 : 원래 잘 알던거라 금방 함. 테스트 유저 데이터도 남아있음

단점 : pk 값이 계속 증가하는 문제 + 이번처럼 로컬로 작업하다 컴퓨터 바꾸면 데이터 다 날라감

 

솔직히 편리하다는 장점이 너무 좋지만...난 공부를 해야 하니까...H2로 해야겠ㄷ..ㅏ...


먼저 난 h2 database 의존성을 추가하지 않았으니 build.gradle 파일에 추가한다.

	runtimeOnly 'com.h2database:h2'

뭔가 only라는 말이 굉장히 부담스러워 mysql이 있는 상황에서 이걸 추가해도 되나...싶었으나 아무튼 추가

-> 런타임에만 쓰인다는 뜻이었다고 한다~~

 

https://bcp0109.tistory.com/315

 

MacOS 에서 H2 database 설치 및 Spring Boot 에 연결

1. H2 Database 홈페이지에서 다운로드 다운로드 링크 : https://www.h2database.com/html/main.html 최신 버전보다는 안정화된 버전이 괜찮습니다. 2. 압축 풀고 실행 다운 받은 파일의 압축을 풀면 다음과 같은.

bcp0109.tistory.com

그리고 h2 데베도 설치해야 한다.

 

test > resources에 application.yml 파일을 만들었다.

 

파일은 원래의 것과 다 똑같은데

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test
    username: sa
    password:
    driver-class-name: org.h2.Driver

데이터소스만 다르다. (다른게 하나 더 있으므로 아래 참조)

 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [select user0_.user_sn as user_sn1_3_, user0_.book_height as book_hei2_3_, user0_.email as email3_3_, user0_.user_img as user_img4_3_, user0_.nickname as nickname5_3_, user0_.password as password6_3_, user0_.refresh_token_value as refresh_7_3_ from user user0_ where user0_.email=?]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement

이런 오류가 떠서 뭘까 했는데 ddl-auto가 none이었다. 근데 create로 수정해도 같은 오류가 발생한다. 테이블을 못만드는 것 같은데...

 

https://hermeslog.tistory.com/538

 

[SpringBoot] H2 Database 연결하기

내용은 간단합니다. IDE : IntelliJ JDK : OpenJDK 11 Framework : Spring Boot 2.5.2 <?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.2 com.h2 H2Runn..

hermeslog.tistory.com

Spring Security가 H2의 접근을 막을 수 있다는 내용이다. 근데 이게 아닌 것 같다...

 

https://jihanga.tistory.com/9

 

스프링 H2관련 에러

스프링 관련해서 작게 프로젝트를 만들어 보고 있는데, 코드는 이상이 없는 것 같아서 봤더니 SQL 쪽에서 문제가 생겼다더라. 근데 아무리봐도 이쪽도 아무 문제가 없어보여서 생각해보다가 이

jihanga.tistory.com

이것도 아닌 것 같은데...예전에 create로 해뒀을 때는 별 문제 없이 생성이 됐었었다.

 

이 부분이 문제였다. h2 DB에서도 mySQL 쿼리를 사용할 수 있는 방법이 있는데, 난 그 방법이 저것인 줄 알고 있었다.

하지만 이건 JPA 데이터베이스 플랫폼을 지정하는 것이다!

아 그리고 캡쳐에는 ddl-auto가 create-drop인데 지금은 create로 수정했다.

 

그래서 H2로 바꾸거나 주석처리를 하면 된다. 내가 의도했던 것은 url에 MODE로 MYSQL을 적는 것이었다.

 

에러메세지가 바뀌었다! 해당 에러메세지는 데이터베이스에 기본으로 들어가 있어야 하는 캐릭터가 없을 때 나오는 메세지이니 제대로 나오는게 맞다.

 

테이블도 생겼다! 테스트 데이터만 추가하면 된다.

 

https://youngjinmo.github.io/2019/11/springboot-import-sql/

 

스프링부트 웹 서버 실행시 자동으로 DB 삽입하기

유튜브에서 박재성님이 올려놓으신 Spring-Boot, JPA로 질문/답변 게시판 구현과정을 보며 게시판 만드는 연습을 하고 있다. 4-2 영상에서 import.sql 파일을 생성해서 서버 실행시마다 자동으로 데이터

youngjinmo.github.io

이 글에 의하면 resources 폴더 아래에 import.sql 파일을 생성하면 sql 쿼리를 자동으로 읽어 DB에 넣어준다고 한다.

나는 테스트 DB를 사용하니까 test의 resources 안에 넣어야겠다.

 

insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(1, "1990-01-01", null, "https://drive.google.com/uc?export=view&id=1nCEX42C4w9-09kaxE9ZP5vcM7z4Ir9Ju", "이상이 싹이 보이는 열락의 무엇을 그리하였는가? 할지니, 물방아 것은 그들은 바로 사라지지 갑 방황하였으며, 것이다. 이성은 청춘의 생의 길을 그들의 곧 무엇이 심장의 아름다우냐? 열락의 새 위하여서 봄바람을 못하다 거친 청춘의 있으랴? 많이 그것은 꽃 우리 품에 그리하였는가? 것은 옷을 눈이 별과 이것이다.", "얼마나 풍부하게 커다란 것은 약동하다. 뜨거운지라", "사는가");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(2, "1990-03-08", 1, "https://drive.google.com/uc?export=view&id=1hE-h2mrh2Rw7EJzaOFZmDq9ELRku8pNY", "밥을 힘차게 찾아 길지 인도하겠다는 청춘의 용감하고 되는 것이다. 우리 꽃 살 그들은 이것이다. 그들의 하여도 가는 피고, 운다. 얼마나 보배를 끝에 것이다. 트고, 같이, 커다란 얼마나 것이다. 무엇을 군영과 듣기만 가치를 가진 앞이 영락과 피다. 열락의 길지 길을 사막이다.","사막에서 피어난 꽃", "더운지라");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(3, "1990-04-21", 3, "https://drive.google.com/uc?export=view&id=1kDIuZ44RJ_XWj7adCus0nbxPSPWtjAHx", "충분히 주는 심장은 불어 거친 가장 살았으며, 운다. 착목한는 찬미를 설산에서 일월과 것이다. 살았으며, 장식하는 청춘의 피부가 웅대한 쓸쓸한 광야에서 이것이다. 보이는 것은 안고, 트고, 무한한 부패뿐이다. 그들은 안고, 피어나기 그러므로 공자는 사람은 이상을 간에 것은 사막이다.", "얼마나 이것을 그들의 뭇 인생에 온갖 운다.", "바이며");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(4, "1990-05-28", 6, "https://drive.google.com/uc?export=view&id=1L07t8TehIumtnfkBahQWKCmTvGZsnN4z", "옷을 전인 위하여 사람은 풍부하게 그것을 때까지 이것이다. 귀는 찬미를 얼음과 얼마나 심장은 무엇이 맺어, 있다. 꾸며 위하여서 꽃이 얼음에 눈에 얼마나 과실이 운다. 미묘한 이상 곳으로 별과 이상의 들어 꽃 말이다. 피어나는 끝에 끓는 눈에 너의 것이다.보라, 오직 위하여서. 소금이라 풀밭에 황금시대를 반짝이는 우리의 때에, 있는가? 가는 원질이 청춘 보라.", "설산에서 시들어 산야에 힘있다.", "사막");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(5, "1990-06-13", 10, "https://drive.google.com/uc?export=view&id=1DObWctcC7WuroRyWBxRCbverHckaTvJR", "그들은 이 창공에 무한한 없으면 피부가 것이다. 영락과 우는 황금시대를 눈이 열매를 만물은 것이다. 하는 현저하게 어디 눈이 너의 듣는다. 옷을 무엇을 못할 놀이 뛰노는 기쁘며, 교향악이다. 우리의 그들의 밥을 부패뿐이다. 무엇이 밥을 목숨을 너의 뿐이다.","빙산속 숨어있던 보물", "발휘");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(6, "1990-05-08", 15, "https://drive.google.com/uc?export=view&id=1CrDit7SKBaWWxsDKhNdgbpznLidPf1vA", "과실이 부패를 황금시대를 속잎나고, 시들어 이것을 이상 커다란 아름다우냐? 방황하여도, 바로 현저하게 사랑의 그것을 품었기 길을 가는 있는가? 노래하며 청춘의 가슴에 뜨고, 이는 온갖 봄바람이다. 것은 길지 만천하의 밥을 봄바람이다. 거친 일월과 부패를 때까지 것은 곳이 기관과 무엇을 하는 것이다.", "아름답고 품에 찾아다녀도", "언덕");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(7, "1990-05-01", 20, "https://drive.google.com/uc?export=view&id=1fSmycrP41tZ6Ws5_Dr16ugZx7s6eM477", "이상이 싹이 보이는 열락의 무엇을 그리하였는가? 할지니, 물방아 것은 그들은 바로 사라지지 갑 방황하였으며, 것이다. 이성은 청춘의 생의 길을 그들의 곧 무엇이 심장의 아름다우냐? 열락의 새 위하여서 봄바람을 못하다 거친 청춘의 있으랴? 많이 그것은 꽃 우리 품에 그리하였는가? 것은 옷을 눈이 별과 이것이다.", "할지니, 풀이 물방아 그들은 영락과 착목한는 가지에 낙원을 있으랴?", "사자");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(8, "1990-08-07", 25, "https://drive.google.com/uc?export=view&id=17dkKwZn8yZG7u4fCKVeKYrxGi4CGYaA3", "굳세게 가슴에 끓는 끓는 바로 이상 같은 있으랴? 청춘에서만 우는 피고, 거친 것이다. 있는 그들은 거친 원대하고, 위하여서 같이, 인생을 인생에 철환하였는가? 소금이라 길지 살 같은 봄바람이다. 그들의 없는 역사를 품에 안고, 청춘 사는가 것이다.","사랑의 싹이 낙원을 청춘 위하여 황금시대다.",  "칼");
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(9, "1990-01-02", 30, "https://drive.google.com/uc?export=view&id=1ZFfSkX1UoiRG_vutDhrOnqIFXO7T-paF", "만물은 창공에 불러 용감하고 트고, 황금시대다. 않는 어디 수 것이 소담스러운 것이다. 바이며, 이상의 얼마나 실현에 때문이다. 소리다.이것은 안고, 꽃 같이, 길지 약동하다. 관현악이며, 뜨고, 보는 바이며, 품었기 그들을 수 속에 얼음 힘있다.", "인생에 속에 황금시대의 청춘이 인생의 너의 작고 곧 이것이다. 청춘의 끓는 보내는 운다.", "바다");

만들었고 실행했더니

 

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL

딱히 한 번에 될거라 기대하진 않았다.

 

https://zzang9ha.tistory.com/371

 

Spring Boot(2.5x) Hibernate, data.sql 실행 시 오류(h2 database)

개발 환경: SpringBoot(2.5x), Spring Data JPA, h2 위와 같은 개발 환경에서 data.sql 파일을 작성한 뒤 애플리케이션을 실행하면 오류가 발생합니다. 각각의 코드는 다음과 같습니다. User package com.juhyun.j..

zzang9ha.tistory.com

이 방법은 통하지 않았다.

 

 

아무래도 쿼리문이 문제였나보다.

 

이런 저런 시도를 해본 뒤 해결을 했는데,

...쌍따옴표가 문제였다...

 

insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(1, '1990-01-01', 0, 'https://drive.google.com/uc?export=view&id=1nCEX42C4w9-09kaxE9ZP5vcM7z4Ir9Ju', '이상이 싹이 보이는 열락의 무엇을 그리하였는가? 할지니, 물방아 것은 그들은 바로 사라지지 갑 방황하였으며, 것이다. 이성은 청춘의 생의 길을 그들의 곧 무엇이 심장의 아름다우냐? 열락의 새 위하여서 봄바람을 못하다 거친 청춘의 있으랴? 많이 그것은 꽃 우리 품에 그리하였는가? 것은 옷을 눈이 별과 이것이다.', '얼마나 풍부하게 커다란 것은 약동하다. 뜨거운지라', '사는가');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(2, '1990-03-08', 1, 'https://drive.google.com/uc?export=view&id=1hE-h2mrh2Rw7EJzaOFZmDq9ELRku8pNY', '밥을 힘차게 찾아 길지 인도하겠다는 청춘의 용감하고 되는 것이다. 우리 꽃 살 그들은 이것이다. 그들의 하여도 가는 피고, 운다. 얼마나 보배를 끝에 것이다. 트고, 같이, 커다란 얼마나 것이다. 무엇을 군영과 듣기만 가치를 가진 앞이 영락과 피다. 열락의 길지 길을 사막이다.','사막에서 피어난 꽃', '더운지라');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(3, '1990-04-21', 3, 'https://drive.google.com/uc?export=view&id=1kDIuZ44RJ_XWj7adCus0nbxPSPWtjAHx', '충분히 주는 심장은 불어 거친 가장 살았으며, 운다. 착목한는 찬미를 설산에서 일월과 것이다. 살았으며, 장식하는 청춘의 피부가 웅대한 쓸쓸한 광야에서 이것이다. 보이는 것은 안고, 트고, 무한한 부패뿐이다. 그들은 안고, 피어나기 그러므로 공자는 사람은 이상을 간에 것은 사막이다.', '얼마나 이것을 그들의 뭇 인생에 온갖 운다.', '바이며');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(4, '1990-05-28', 6, 'https://drive.google.com/uc?export=view&id=1L07t8TehIumtnfkBahQWKCmTvGZsnN4z', '옷을 전인 위하여 사람은 풍부하게 그것을 때까지 이것이다. 귀는 찬미를 얼음과 얼마나 심장은 무엇이 맺어, 있다. 꾸며 위하여서 꽃이 얼음에 눈에 얼마나 과실이 운다. 미묘한 이상 곳으로 별과 이상의 들어 꽃 말이다. 피어나는 끝에 끓는 눈에 너의 것이다.보라, 오직 위하여서. 소금이라 풀밭에 황금시대를 반짝이는 우리의 때에, 있는가? 가는 원질이 청춘 보라.', '설산에서 시들어 산야에 힘있다.', '사막');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(5, '1990-06-13', 10, 'https://drive.google.com/uc?export=view&id=1DObWctcC7WuroRyWBxRCbverHckaTvJR', '그들은 이 창공에 무한한 없으면 피부가 것이다. 영락과 우는 황금시대를 눈이 열매를 만물은 것이다. 하는 현저하게 어디 눈이 너의 듣는다. 옷을 무엇을 못할 놀이 뛰노는 기쁘며, 교향악이다. 우리의 그들의 밥을 부패뿐이다. 무엇이 밥을 목숨을 너의 뿐이다.','빙산속 숨어있던 보물', '발휘');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(6, '1990-05-08', 15, 'https://drive.google.com/uc?export=view&id=1CrDit7SKBaWWxsDKhNdgbpznLidPf1vA', '과실이 부패를 황금시대를 속잎나고, 시들어 이것을 이상 커다란 아름다우냐? 방황하여도, 바로 현저하게 사랑의 그것을 품었기 길을 가는 있는가? 노래하며 청춘의 가슴에 뜨고, 이는 온갖 봄바람이다. 것은 길지 만천하의 밥을 봄바람이다. 거친 일월과 부패를 때까지 것은 곳이 기관과 무엇을 하는 것이다.', '아름답고 품에 찾아다녀도', '언덕');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(7, '1990-05-01', 20, 'https://drive.google.com/uc?export=view&id=1fSmycrP41tZ6Ws5_Dr16ugZx7s6eM477', '이상이 싹이 보이는 열락의 무엇을 그리하였는가? 할지니, 물방아 것은 그들은 바로 사라지지 갑 방황하였으며, 것이다. 이성은 청춘의 생의 길을 그들의 곧 무엇이 심장의 아름다우냐? 열락의 새 위하여서 봄바람을 못하다 거친 청춘의 있으랴? 많이 그것은 꽃 우리 품에 그리하였는가? 것은 옷을 눈이 별과 이것이다.', '할지니, 풀이 물방아 그들은 영락과 착목한는 가지에 낙원을 있으랴?', '사자');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(8, '1990-08-07', 25, 'https://drive.google.com/uc?export=view&id=17dkKwZn8yZG7u4fCKVeKYrxGi4CGYaA3', '굳세게 가슴에 끓는 끓는 바로 이상 같은 있으랴? 청춘에서만 우는 피고, 거친 것이다. 있는 그들은 거친 원대하고, 위하여서 같이, 인생을 인생에 철환하였는가? 소금이라 길지 살 같은 봄바람이다. 그들의 없는 역사를 품에 안고, 청춘 사는가 것이다.','사랑의 싹이 낙원을 청춘 위하여 황금시대다.',  '칼');
insert into characters (character_sn, birthday, height, character_img, long_description, short_description, character_name) values(9, '1990-01-02', 30, 'https://drive.google.com/uc?export=view&id=1ZFfSkX1UoiRG_vutDhrOnqIFXO7T-paF', '만물은 창공에 불러 용감하고 트고, 황금시대다. 않는 어디 수 것이 소담스러운 것이다. 바이며, 이상의 얼마나 실현에 때문이다. 소리다.이것은 안고, 꽃 같이, 길지 약동하다. 관현악이며, 뜨고, 보는 바이며, 품었기 그들을 수 속에 얼음 힘있다.', '인생에 속에 황금시대의 청춘이 인생의 너의 작고 곧 이것이다. 청춘의 끓는 보내는 운다.', '바다');

그렇게 쌍따옴표를 따옴표로 수정해서 성공했다.

 

그럼 어제 깨졌던 테스트는?

하하 깨지지 않는다

Comments