콘텐츠로 건너뛰기

자바

내가 만드는 테스트코드 그리고 한글코드

예전부터 한글로 테스트코드를 작성하는 것에 대한 얘기를 많이 들었습니다.  사실 저는 한글로 코드를 짜는 것에 대해서 거부했었던 사람중에 하나입니다. (심지어 주석마저도 영어로 쓰자…라는 주의였…) 그러다가 갑자기 뽐뿌가 와서 한글로 한 번 변환해 봤습니다. 생각보다 나쁘지 않다는 느낌이 들었습니다. 처음에는 조금… 더 보기 »내가 만드는 테스트코드 그리고 한글코드

primitive type에서 generic사용 시 오류 발생

모델객체 내부에서 기본값을 지정해야 되는 경우에 위처럼 내부 enum 객체를 생성해서 사용했다. 물론 객체가 갖는 값은 여러 가지 타입이 있으니 Object로 선언하고 제너릭을 사용하여 리턴타입에 맞춰서 변경하도록 했다. 그런데, 이클립스에서 컴파일 시에 오류가 나지 않던 것이 실제 컴파일을 돌리면… 더 보기 »primitive type에서 generic사용 시 오류 발생

PowerMock 사용시 오류 수정

static method에 대한 테스트 방법은 power mock을 사용하면 된다. 하지만 테스트를 진행하려 하니 power mock에서 exception을 발생시킨다.

구글링으로 찾아봤더니 대략 이런 문서가 나온다. (참고) 요약하면, javassist 라이브러리를 power mock에서 사용하게 되는데.. 그 라이브러리에 버그가 있어서 3.6버전에서 문제가 있어서 3.12GA버전에서는 해결됐다.… 더 보기 »PowerMock 사용시 오류 수정

[self-review] 로직의 논리오류

사실 로직을 분석하고 구현할 때 단순한 문법오류는 굉장히 훌륭해진 IDE(이클립스를 위시한)들이 잡아준다. 다만, 교묘한 논리적인 오류들이 개발자의 머리를 복잡하게 만든다. 문제)

위 로직은… 어떤 리스트를 구성하는데, 갯수가 부족하면 베스트앱으로 채워넣는 로직이다. 위 로직에서 어떤 부분이 문제일까. 기존에 별 문제가… 더 보기 »[self-review] 로직의 논리오류

upsert = insert + update를 처리하는 로직

DB에 데이터를 저장할 때, 빈번하게 사용되는 로직중에 insert/update가 있다. 먼저 select 한 뒤, 데이터가 존재하지 않으면 insert, 데이터가 존재하면 update를 하도록 한다. (혹은 update를 먼저하고 exception이 발생하면 insert를 하도록 구현하는 경우도 있다) public void renewMemberInfo(Member member) {   Member originMember = memberRepository.selectMember(member.getId());   if (originMember.isNotEmpty()) { memberRepository.update(member);… 더 보기 »upsert = insert + update를 처리하는 로직

[java] oauth encoder

java에서 제공하는 java.net.URLEncoder.encode()와 oauth 규약에서 정의하는 encode()는 서로 다르다. http://www.marcworrell.com/article-2943-en.html 에서 보면 oauth에서는 RFC3986 규약을 따르고 있으며, 알파벳, 숫자, -, ., _, ~는 인코딩하지 않기로 가이드하고 있다. 즉, URLEncoder를 그대로 사용할 수는 없어서 wrapping해서 사용하게 된다. 다음 코드와 같이 된다.… 더 보기 »[java] oauth encoder

power mock 사용법 (final class의 테스트)

mockito에서 final class에 대한 mock은 생성이 불가능하다. 예를 들면, shindig library에서 HttpResponse.java가 있는데.. public HttpResponse() {} HttpResponse(HttpResponseBuilder builder) { … } private HttpResponse(int httpStatusCode, String body) { … } public HttpResponse(String body) { this(SC_OK, body); } 위 클래스는 final 클래스이고,… 더 보기 »power mock 사용법 (final class의 테스트)

finally 코드의 이해

흠… klocwork가 정적 결함으로 finally 구문을 잡았다. 코드를 확인했더니 finally 구문에서 return을 호출하고 있다. finally 사용법에 안 맞게 사용되긴 했지만 (finally는 리소스 해제 등에 활용됨) 크게 문제가 되나? 라는 생각을 가지고 테스트를 일부 해봤다.

위는 정상적인 경우이므로 100을 리턴하길… 더 보기 »finally 코드의 이해

[eclipse plugin] infinitest

다른 분이 공유해주셔서 알게 됐는데, infinitest라는 이클립스 플러그인이 있다. 코드가 바뀔 때마다 백그라운드에서 관련 테스트를 계속 돌려서 자동으로 결과를 알려준다. JunitMax라는 것도 있는데 이건 1년에 100달러 씩 유료로 사용하는데… infinitest는 GNU License로 변경되어 개인/기업 무료로 사용이 가능하다. 이클립스에서 help >… 더 보기 »[eclipse plugin] infinitest

[troubleshooing] maven build fail : jdk version error

로컬에서는 되는데 (이클립스가 버전 정보를 명시해주니까…) 리모트(CI서버)에서는 오류가 발생한다. 위와 같이 오류가 발생하는 이유는 maven에서 사용하는 JDK 버전이 명시되어 있지 않기 때문이다. 당연히 아래와 같이 maven plugin 설정을 추가해주면 해결된다.

출처 : http://forum.springsource.org/showthread.php?t=24913