6. 테스트 정보 설정 - test {}
JUnit(3.8.x 또는 4.x) 이나 TestNG를 실행할 때 필요한 정보는 test 블록을 사용하여 설정한다. 테스트 작업을 위한 주요 속성 및 함수는 다음의 표에 정리하였다.
속성/함수 이름 | 설명 |
classpath | 테스트 작업을 수행할 때 사용할 클래스 경로 지정 |
excludes | 테스트에서 제외할 클래스 지정. ANT 스타일 패턴을 사용한다. 예) excludes = ['org/foo/**'] → org.foo 패키지 아래의 모든 클래스(하위 패키지 포함)들은 테스트에서 제외. |
includes | 테스트에 포함할 클래스 지정. ANT 스타일 패턴을 사용한다. |
systemProperties | 테스트를 실행하는 JVM에 전달할 시스템 프로퍼티 지정 예) systemProperties = ['프로퍼티명':'값', '프로퍼티명':'값', ...] |
minHeapSize | 테스트 할 때 JVM이 사용할 최소 힙 메모리 크기 예) minHeapSize = '128m' |
maxHeapSize | 테스트 할 때 JVM이 사용할 최대 힙 메모리 크기 예) maxHeapSize = '512m' |
jvmArgs | JVM에게 전달할 추가 인자 값. 시스템 프로퍼티와 최대/최소 힙 메모리 크기는 별도로 지정하기 때문에 이 항목에 포함해서는 안 된다. |
useJUnit() | 테스트할 때 사용할 프레임워크로 JUnit을 지정한다. 기본으로 JUnit을 사용 |
useTestNG() | 테스트할 때 사용할 프레임워크로 TestNG를 지정한다. 생략하면 JUnit을 사용 |
beforeTest() | 테스트를 시작하기 전에 수행할 명령들을 지정 예) before {테스트를 실행하기 전에 수행할 명령들} |
- build.gradle 코드 분석
test {
systemProperties 'property': 'value'
}
앞의 코드는 프로젝트가 생성될 때 추가된 코드이다. 시스템 프로퍼티를 설정하는 방법을 보여주는 예시 코드이기 때문에 지워도 상관없다. systemProperties() 함수를 호출하여 값을 설정하는 예이며 속성을 통해 직접 값을 설정하고 싶다면 다음과 같이 작성해야 한다.
test {
systemProperties = ['property': 'value']
}
7. 아카이브 파일(.jar) 배포 - uploadArchives {}
프로젝트를 빌드한 후 생성된 산출물은 uploadArchives 작업을 통해 저장소에 배포할 수 있다. 저장소에 대한 정보는 uploadArchives 블록 안에 repositories 블록을 사용하여 설정한다. repositories 블록의 설정 방법은 앞에서 설명한 것과 같다.
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
앞의 코드에서 flatDir은 로컬 저장소를 설정하는 함수이다. 경로 정보는 dirs() 함수를 호출하여 지정한다. uploadArchives 작업을 실행하면 프로젝트 폴더 아래에 repos 폴더를 만들고 생성된 JAR 파일을 이 폴더에 복사한다.
8. Gradle Eclipse 플러그인
이클립스에서 [File] → [import...] 메뉴를 통해 외부 프로젝트를 가져오려면 최소한 그 프로젝트 폴더에 '.project' 파일이 있어야 한다. Java 프로젝트라면 '.classpath' 파일과 JDT(자바 개발 도구) 설정 파일도 함께 있어야 한다. Eclipse 플러그인에는 이런 이클립스 관련 파일을 쉽게 다룰수 있는 명령어가 들어 있다.
자바 프로젝트를 톰캣 실행환경에 등록할 수 있는 웹 프로젝트로 만들고 싶다면 WTP(웹 도구 플랫폼) 설정 파일이 있어야 한다. WTP 설정 파일을 다루는 명령어는 eclipse-wtp 플러그인과 war 플러그인에 들어 있다.
- Eclipse 관련 플러그인 사용
Eclipse 플러그인을 사용하려면 빌드 스크립트 파일에 다음 명령어를 추가한다.
apply plugin: 'eclipse'
eclipse-wtp 플러그인과 war 플러그인을 사용하려면 다음 명령어를 추가한다. eclipse-wtp 플러그인은 eclipse 플러그인을 포함하고 있어서 eclipse 플러그인을 따로 추가하지 않아도 된다.
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
- 주요 작업들
다음은 Eclipse 플러그인으로 할 수 있는 주요 작업을 정리한 표이다.
작업 이름 | 설명 |
eclipseProject | .project 파일 생성 |
eclipseClasspath | .classpath 파일 생성 |
eclipseJdt | .settings/org.eclipse.jdt.core.prefs 파일 생성 |
eclipseWtpComponent | .settings/org.eclipse.wst.common.component 파일 생성 |
eclipseWtpFacet | .settings/org.eclipse.wst.common.project.facet.core.xml 파일 생성 |
eclipseWtp | 선행 작업 : eclipseWtpComponent → eclipseWtpFacet 이클립스 WTP 관련 파일 생성 |
eclipse | 선행 작업 : eclipseClasspath → eclipseJdt → eclipseProject → eclipseWtpComponent → eclipseWtpFacet → eclipseWtp 이클립스 관련 모든 파일을 생성한다. |
cleanXXX | cleanEclipseProject와 같이 기존의 작업 이름에 clean이 붙으면 그 작업으로 생성된 파일을 제거한다. |
- 웹 애플리케이션 속성 다루기
eclipseWtp 작업 후 .settings 폴더에 생성된 org.eclipse.wst.common.project.facet.core.xml 파일을 열어보면 다음과 같이 웹 애플리케이션 개발에 사용할 서블릿 버전이 2.4로 되어 있다.
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<installed facet="jst.web" version="2.4"/>
<installed facet="jst.java" version="1.7"/>
</faceted-project>
이 상태에서 소스를 작성하면 이클립스는 서블릿 2.4를 기준으로 소스 코드 검증을 수행한다. 이클립스 WTP 플러그인이 사용하는 facet 값을 바꾸고 싶다면 build.gradle 파일에 다음의 형식으로 정의하면 된다.
eclipse {
wtp {
facet {
facet name: '속성명', version: '값'
...
}
}
}
교재에 있는 build.gradle 파일을 한 번 살펴본다.
- build.gradle 코드 분석
eclipse {
wtp {
facet {
facet name: 'jst.web', version: '3.0' // Servlet Spec Version 지정
facet name: 'jst.java', version: '1.7' // Java Version 지정, 1.7 ...
}
}
}
서블릿 버전은 3.0을 사용하겠다는 것이고, 웹 애플리케이션을 수행하는데 필요한 자바 버전은 1.7이라는 뜻이다.
이것으로 Gradle 빌드 파일(build.gradle)의 내용을 자세히 살펴보았다. 좀 더 자세한 내용은 https://gradle.org/ 사이트에 방문하여 사용자 안내서(User Guide)나 API 문서를 설펴보기 바란다. Gradle 설정 파일은 Groovy 스크립트로 작성하기 때문에 Groovy에 대한 이해는 필수이다. Gradle과 Groovy, Groovy 문법 요약의 내용을 반드시 학습한다.
교재 build.gradle 소스이다.
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
version = '1.0'
eclipse {
wtp {
facet {
facet name: 'jst.web', version: '3.0' // Servlet Spec Version 지정
facet name: 'jst.java', version: '1.7' // Java Version 지정, 1.7 ...
}
}
}
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework:spring-context:4.0.3.RELEASE'
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
test {
systemProperties 'property': 'value'
}
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
132. XML 기반 빈 관리 컨테이너 (2) (3) | 2022.10.15 |
---|---|
131. XML 기반 빈 관리 컨테이너 (1) (3) | 2022.10.14 |
129. Gradle 빌드 파일 분석 (2) (0) | 2022.10.12 |
128. Gradle 빌드 파일 분석 (1) (0) | 2022.10.11 |
127. 스프링 IoC 컨테이너 사용 준비 (4) (0) | 2022.10.10 |
댓글