- 그루비 한글번역 튜토리얼
- IntelliJ IDE에서 JUnit 4 테스트를 생성하고 구동시키는 방법
> IntelliJ IDE에서 그루비 생성하고 클래스 테스트하기
위의 eclipse 기준 동영상을 IntelliJ IDE에 맞추어 테스트 해본다
1) 새로운 프로젝트 생성
- New Project 생성
- step-01 : Java Module 선택
- step-02 : src 디렉토리 선택
- step-03 : Groovy 선택 (사전에 Groovy는 설치되어 있어야 한다)
// collection & closure
def coll = ["groovy", "java", "ruby"] // javascript처럼 컬렉션을 만들 수 있다
assert coll instanceof Collection // assert 결과가 true이면 다음 문장으로 계속 수행함
assert coll instanceof ArrayList
println coll.class
println coll
coll << "perl" // 추가하기
println coll
coll[4] = 'python' // 배열처럼 직접 삽입
println coll
println coll - ['java'] // 값 빼기
// closure 1
coll.each{ value -> // 파라미터 명을 value로 설정함
println '> ' + value
}
// closure 2
def excite = { word ->
return "${word}!!"
}
assert 'Dowon!!' == excite('Dowon')
println excite('Dowon')
// key=value의 map 객체를 만듦
def hash = [name:'yun', 'age':27]
assert hash.getClass() == java.util.LinkedHashMap
println hash
hash.height = 177 // key=value 추가하기
println hash
hash.put('height', 190) // put 이용
println hash
// set, get 메소드가 자동으로 만들어 진다.
// getGenre() 메소드를 재정의한다
class Song {
def name
def artist
def genre
String toString() {
"${name}, ${artist}, ${getGenre()}"
}
def getGenre() {
genre.toUpperCase()
}
}
class SongExample {
static void main(args) {
// 생성자는 그루비가 자동으로 생성해 준다
Song sng = new Song(name: "tear's heaven", artist: "singer", genre: "rock")
sng.name = "hi"
sng.setArtist("dowon") // set, get 메소드가 이미 있으므로 호출 가능하다
println sng
Song sng2 = new Song()
// name 지정을 하지 않았으므로 null이다. ?를 하면 null safety 체크한다
// 즉 name 이 null 이면 toUpperCase() 를 수행하지 않는다
println sng2.name?.toUpperCase()
}
}
5) 테스트 코드를 작성한다 : java의 junit 코드로 짜된다 어차피 그루비도 수행시 컴파일 되면 java와 같이 bytecode로 변경된다
- Test 코드를 작성한다 : Groovy 스타일 Test 케이스를 만들 수도 있고, Java 스타일 Test 케이스도 가능하다 (Bi-direction)
import junit.framework.Assert;
import junit.framework.TestCase;
import org.junit.Test;
public class SongTest {
@Test
public void testToString() {
Song song = new Song();
song.setName("Smells like teen spirits");
song.setArtist("youngsik");
song.setGenre("hard rock");
Assert.assertEquals("Smells like teen spirits, youngsik, HARD ROCK", song.toString());
}
}