ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [sts] spring groovy 테스트 코드 환경 적용
    program_language 및 궁금한것 2020. 3. 25. 20:05

    spring boot 프로젝트를 진행하며 groovy를 적용하였다.

     이클립스에 적용하려니 여간 어려운게 아니였다. 

    다른 블로그들을 참고하여 이것저것 따라 하다 지쳐 새로 만들었다.

     물론 내가 하는 방법도 정도는 아니겠지만 아무것도 설치 되어 있지 않은 환경에서 테스트 한것이니 groovy를 적용하려는 다른분들께 도움이 될것이라 생각한다.

    (혹시 안되는 부분 있다면 댓글 남겨주세요)

     

    1. spring starter 프로젝트 생성

    2. pom.xml 내용 추가

    <!-- groovy설정 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.spockframework</groupId>
    			<artifactId>spock-core</artifactId>
    			<version>1.2-groovy-2.4</version>
    			<scope>test</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>org.spockframework</groupId>
    			<artifactId>spock-spring</artifactId>
    			<version>1.2-groovy-2.4</version>
    			<scope>test</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>org.codehaus.groovy</groupId>
    			<artifactId>groovy-all</artifactId>
    			<version>2.4.7</version>
    			<scope>test</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>com.h2database</groupId>
    			<artifactId>h2</artifactId>
    		</dependency>

    plugin태그안에 surefire-plugin추가

    <build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    			
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-surefire-plugin</artifactId>
    				<version>2.19.1</version>
    				<configuration>
    					<argLine>-Dfile.encoding=UTF-8</argLine>
    					<useSystemClassLoader>false</useSystemClassLoader>
    				</configuration>
    			</plugin>
    			
    		</plugins>
    	</build>

    3. 이클립스 플러그인 추가

    Help - Eclipse MarketPlace - groovy검색 후 설치

    (Groovy Development Tools)

    4. src/test/java/에 테스트이름.groovy를 생성한다.

    패키지 우클릭 - New - Other - Groovy Type - kind: class - 이름 정하고 - finish

    5. 프로젝트 우클릭 - Build Path - New Source Folder에 아래 폴더를 추가해준다.

       (해당 패키지가 원래 있었다면 이 과정 생략 가능)

    이 네가지 패키지가 있는걸 확인되면 성공 (x표시는 무시)

    src/main/java

    src/main/resources

    src/test/java

    src/test/resources

    src/test/groovy (output folder: 프로젝트명/target/test-classes)

    특히 groovy폴더는 없으면 build 할때 테스트 코드에 오류가 나도 실행이 된다.

    나는 테스트 코드에 오류가 있을시에 메이븐 빌드가 실패하게 하기 위해 groovy 폴더를 추가하였다.

     

    6. .groovy 우클릭 - Run as - Junit Test - JUnit더블클릭- .groovy파일의 이름으로 생김(ex.  GroovyControllerTest) Test runner를 꼭 Junit4로 선택

    * Junit5를 선택 후 실행시 아래와 같은 에러가 나올 것이다. 이 에러를 보면 Junit4로 꼭 변경해주자.

     No tests found with test runner 'JUnit 5'

    (groovy파일 실행은 JUnit으로 한다. groovy뭔가로 실행하는 줄 알고 한참을 찾았는데...)

    7. 내용 작성 후 실행은 .groovy 우클릭 - Run as - Junit Test를 한다.

    8. 스프링에서 사용할 것이라면 .groovy 클래스 상단에 설정을 몇가지 해줘야 한다.

    그렇지 않으면 아래와 같은 에러를 만난다.

    @SpringBootTest(classes = DemoApplicationTests.class)
    @AutoConfigureMockMvc
    class DemoTest extends Specification {
    	
    	@Autowired
    	TestService service;
    	
    	def "2+1"(){
    		setup:
    		int a = 2
    		int b = 1
    		when:
    		int c= a+b
    		then:
    		c==3
    	}
    	
    	def "service 호출" (){
    		setup:
    		when:
    		String str = service.test()
    		then:
    		str == 'hi'
    	}
    }
    

    @SpringBootTest(classes = DemoApplicationTests.class)
    @AutoConfigureMockMvc
    class DemoTest extends Specification {

    이부분을 설정해주면 에러는 사라진다. 

    테스트가 정상 통과 되었을때 아래 그림과 같이 정상적으로 결과가 나온다.

     

    baeldung의 블로그 참고

    반응형

    댓글

Designed by Tistory.