개발 툴은 intellij를 사용한다는 전제 하에 이 글을 시작하려고 한다.
테스트 코드 작성하기
프로젝트를 진행하다보면 부피가 점점 커질수록 전체를 돌리는 것에 시간이 많이 소요되고 무거워진다. 그 이유중 하나는 @Beans들이 점점 많아지는 것에대한 처리가 어렵다는 점이다.
무튼 이를 극복하기 위해 사용하는 것이 Test code다.
테스트 코드를 작성하는 방법은 간단하다.
메인 어플리케이션에 테스트 함수를 만들어 주면된다.
코드로 한번 알아보도록 하자.
프로젝트 명이 Omok
이라서그런지 인텔리제이에서 자동적으로 OmokApplicationTests
이라는 자바파일하나를 만들어줬다.
여기에 작성하면 된다.
package falcons.omok;
import falcons.omok.game.GameDto;
import falcons.omok.game.GameMap;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.lang.reflect.Member;
@SpringBootTest
class OmokApplicationTests {
@Test
void contextLoads() {
}
@Test
@DisplayName("오목게임디버깅")
public void 게임테스트() {
GameDto.Request gameDto = new GameDto.Request();
GameMap gameMap = new GameMap();
gameDto.setColor('b');
gameDto.setPos("5,6");
GameDto.Response gameResponse = gameMap.getMyTurn(gameDto);
gameMap.init();
char map[][] = gameMap.map;
System.out.println("게임테스트 시작");
for(int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
}
}
나는 오목게임에 대한 부분만 테스트 해보고 싶었다.
그래서 게임을 운영하는 데 필요한 애들을 먼저 import해줬다.
함수명은 한글로 적어줬는데 디버깅이 목적이기 때문에 굳이 현학적(?)으로 영어로 적기보다는 알아보기쉽게 한글로 적는게 낫다.
단순하게 @Test
어노테이션을 함수 위에 붙히면 테스트 코드가 된다.
그 밑의 @DisplayName("오목게임디버깅")
은 테스트 코드가 진행될때 보여지는 이름이라고 하는데,, 음 굳이 필요없는 것 같다.
이제 실행해보자.
인텔리제이에서는 저렇게 테스트 어노테이션을 두면 자동으로 재생 버튼이 그 옆에 활성화된다.
저 버튼을 클릭하면 터미널창에서 테스트 코드가 실행되는 것을 확인할 수 있다.
명령어로 실행하는 법도 알아보자.
빌드도구는 Maven/Gradle로 아마 되어있을 거다. 본인의 프로젝트의 빌드도구에 따라, 운영체제가 무엇인지에 따라 명령어가 다르다.(당연)
- maven사용 + ubuntu :
mvn test
- gradle사용 + ubuntu :
./gradlew test
- gradle + window
gradlew.bat test
특정 클래스를 실행하고 싶을 때
- maven
mvn test -Dtest=[실행하려는테스트코드명]
- gradle
./gradlew test --tests [실행하려는테스트코드명] gradlew.bat test --tests [실행하려는 테스트 코드명]
참고로 실행하는 테스트 클래스의 위치를 정확하게 작성해줘야 터미널이 알아먹는다.
나는 하다하다짜증나서 상위 폴더명부터써주니 드디어 되었다.....
'JAVA 당' 카테고리의 다른 글
[eclipse 에러 해결] java.lang.UnsupportedClassVersionError: * has been compiled by a more recent version of the Java Runtime (0) | 2025.03.12 |
---|---|
openCV 를 위한 데이터 셋 구성과 spring boot, MySQL연동하기 (0) | 2023.11.23 |
그래프정리 및 구현 (0) | 2023.07.24 |
[JAVA] 열받는 자바문법 : Scanner, BufferedReader (0) | 2023.06.21 |
[JAVA] BigInteger 함수 정리 (0) | 2023.06.14 |