woong's
Spock Test 사용하기 본문
Spock Test 사용하기
이번에 스터디 기회가 생겨서 기존에 배웠던 , Spring + Maven 을 이번에는 Spring + Gradle 로
스터디를 학습 하다가 배운 Spock 에 대해 사용법을 간단히 소개 합니다 .
Spring + Maven 을 통해서 스터디 할적에는 CRUD 를 테스트 하기 위해서 Junit Test 를 이용하여 테스트를 진행하였는데 이번에는 Spock 을 통해서 진행하였습니다 .
Spock 문법에 대해서는 Junt 을 사용해 보신분이라면 보시면 금방 따라 하실수 있습니다 .
저또한 이번에 처음써보았지만 그리 낯설지는 않았습니다 .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | public class BookAppTest { BookApp bookApp; @Before public void setUp() throws SQLException{ bookApp = new BookApp(); Book book = new Book(); book.setName("토비의 스프링"); book.setAuthor("이일민"); book.setComment("대세"); book.setPublishDate(new Date()); bookApp.add(book); bookApp.add(book); } @Test public void add() throws SQLException{ bookApp = new BookApp(); Book book = new Book(); book.setName("토비의 스프링"); book.setAuthor("이일민"); book.setComment("대세"); book.setPublishDate(new Date()); bookApp.add(book); int result = bookApp.countAll(); assertThat(result, is(3)); } @Test public void update() throws SQLException{ bookApp = new BookApp(); List<Book> bookList = bookApp.getAll(); Book book = new Book(); book.setId(bookList.get(0).getId()); book.setName("안드로이드"); book.setAuthor("젤리빈"); book.setComment("진저브레드"); book.setPublishDate(new Date()); bookApp.update(book); List<Book> bookList2 = bookApp.getAll(); assertThat(bookList2.get(0).getName(), is("안드로이드")); assertThat(bookList2.get(0).getAuthor(), is("젤리빈")); assertThat(bookList2.get(0).getComment(), is("진저브레드")); } // @Test public void search() throws SQLException{ bookApp = new BookApp(); List<Book> result = bookApp.search("토비의 스프링"); for (int i = 0; i < result.size(); i++) { assertThat(result.get(i).getName(),is("토비의 스프링")); } } @Test public void delete() throws SQLException{ bookApp = new BookApp(); List<Book> bookList = bookApp.getAll(); Book book = new Book(); book.setId(bookList.get(0).getId()); bookApp.delete(book); int result = bookApp.countAll(); assertThat(result, is(1)); } @Test public void get() throws SQLException{ bookApp = new BookApp(); List<Book> bookList = bookApp.getAll(); Book book = new Book(); book = bookApp.get(bookList.get(0).getId()); assertThat(book.getName(), is("토비의 스프링")); assertThat(book.getAuthor(), is("이일민")); } @Test public void getAll() throws SQLException{ bookApp = new BookApp(); List<Book> bookList = bookApp.getAll(); assertThat(bookList.size(), is(2)); assertThat(bookList.get(0).getName(), is("토비의 스프링")); assertThat(bookList.get(0).getAuthor(), is("이일민")); } @Test public void deleteAll() throws SQLException { bookApp = new BookApp(); bookApp.deleteAll(); int result = bookApp.countAll(); assertThat(result, is(0)); } @Test public void countAll() throws SQLException{ bookApp = new BookApp(); int result = bookApp.countAll(); assertThat(result, is(2)); } @After public void tearDown() throws SQLException{ bookApp = new BookApp(); bookApp.deleteAll(); } } |
이부분이 Junit 으로 CRUD를 확인한 Test 가 되겠습니다 .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | class BookAppGroovyTest extends Specification { def bookApp def setup(){ bookApp = new BookApp(); def book = new Book(); book.setName("토비의 스프링") book.setAuthor("이일민") book.setComment("대세") book.setPublishDate(new Date()) bookApp.add(book) bookApp.add(book) } def "책 추가"(){ when: bookApp = new BookApp(); def book = new Book(); book.setName("토비의 스프링") book.setAuthor("이일민") book.setComment("대세") book.setPublishDate(new Date()) bookApp.add(book); int result = bookApp.countAll() then: result ==3 } def "책 수정"(){ when: bookApp = new BookApp(); def bookList = bookApp.getAll(); def book = new Book(); book.setId(bookList.get(0).getId()); book.setName("안드로이드"); book.setAuthor("젤리빈"); book.setComment("진저브레드"); book.setPublishDate(new Date()); bookApp.update(book); def bookList2 = bookApp.getAll(); then: bookList2.get(0).getName() =="안드로이드" bookList2.get(0).getAuthor() == "젤리빈" bookList2.get(0).getComment() == "진저브레드" } def "책 제목으로 찾기"(){ when: bookApp = new BookApp(); def result = bookApp.search("토비의 스프링"); then: for ( i in 0.. result.size()-1) { result.get(i).getName() == "토비의 스프링" } } def "책 삭제"(){ when: bookApp = new BookApp(); def bookList = bookApp.getAll(); def book = new Book(); book.setId(bookList.get(0).getId()); bookApp.delete(book); def result = bookApp.countAll(); then: result == 1 } def "책 id 로 하나 찾기 "(){ when: bookApp = new BookApp(); def bookList = bookApp.getAll(); def book = new Book(); book = bookApp.get(bookList.get(0).getId()); then: book.getName() == "토비의 스프링" book.getAuthor() == "이일민" } def "책 모든 갯수"(){ when: bookApp = new BookApp(); def result = bookApp.countAll() then: result == 2 } def "모든 책 검색"(){ when: bookApp = new BookApp(); def bookList = bookApp.getAll(); then: bookList.size() ==2 bookList.get(0).getName() == "토비의 스프링" bookList.get(0).getAuthor() == "이일민" } def "모든 책 삭제"(){ when: bookApp = new BookApp(); bookApp.deleteAll(); def result = bookApp.countAll(); then: result == 0 } def cleanup(){ bookApp = new BookApp() bookApp.deleteAll() } } |
이부분이 위의 Junit Test 를 Spock Groovy 로 바꾼 Test 가 되겠습니다 .
이 Spock Groovy 에 대해서 이번에 찾아보면서 NHN 백기선 씨가 Hello World 에서 소개 된적이있었던것을 보았습니다 .
제가 부연설명을 하는것보다 정리가 잘되있는것을 보는게 나을거 같아 해당 홈페이지 링크 합니다 .
Comments