Home 테스트 코드,, 그리고 마주한 4시간의 삽질,,
Post
Cancel

테스트 코드,, 그리고 마주한 4시간의 삽질,,

11.07

test코드 실행 에러(4h)

test코드를 작성해서 실행했는데 에러가 나서 돌아가지 않는다.. 도대체 왜?..

1. 외부설정을 불러오려 했으나 존재하지 않는다.

@Value 를 통해 application.yml의 설정을 불러오고자 했으나 설정에 값이 존재하지 않아 계속해서 injection에러가 발생했다. application.yml에 설정을 추가하니 정상적으로 작동

  • @Value : application.yml(properties)의 설정을 불러오는 어노테이션
1
2
3
4
public class Config {
	@Value("${application.yml}") // application.yml에 설정이 없어서 생긴 에러
	private String configString;
}
  • 어디서 에러가 났는지 확인은 했지만 아예 모르는 것이라 동료에게 물어봄 -> 적어도 어노테이션을 찾아보고 왜 안되는건지에 대해 다시 한번 생각해보기

2. Cannot find symbol

테스트 코드를 실행해보니, cannot find symbol 에러 발생 -> 아래와 같이 명령어 실행

  1. gradle clean
  2. build project

콘솔을 확인해보니 기존에 있던 메소드가 사라지면서 생긴 에러이기에 기존 클래스를 전체 주석으로 변경하고 실행함

테스트를 실행했을때 아래와 같이 여러개의 에러가 발생..

  • Slf4jSpyLogDelegator: 1. PreparedStatement.executeBatch() FAILED!
  • table doesn’t exist.
  • com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

결과적으로는 Docker의 mySql 이 꺼져있어서 생긴 에러로, 언제 꺼졌는지는 모르겠지만 다시 켜주니까 정상 작동하였다.

4. NullPointException

이제는 에러가 발생하지는 않지만, NullPointException이 발생했다. 기존에 @NotNull로 값을 막아둔 컬럼이 있는데 막상 확인해보니, 경우(create/update)에 따라 null이 허용되는 컬럼이라 @NouNull 을 삭제했다.

막상 적고보니, 왜 그렇게 까지 오래 걸렸나 싶지만,, 대부분 혼자 해결한 것에 의의를 둔다..

This post is licensed under CC BY 4.0 by the author.

Exception

상속보단 조립