콘텐츠로 건너뛰기

Programmer

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를 처리하는 로직

String to Xml convert

테스트 케이스를 작성하는 중에 dummy xml 스트링을 리턴하도록 하는 경우가 있는데, 이럴 때 마다 Document를 생성하고 Element를 만드는 경우는 코드상 오버헤드가 크다. private Document stringToXml(String str) throws Exception {   return new SAXBuilder().build(new StringReader(str)); } 이렇게 해서 문자열을 xml로 변환하여… 더 보기 »String to Xml convert

[guava] Joiner 활용 – List를 String으로 concat할 때

List<String> 데이터를 String으로 표현해야 할 경우가 있다. 예를 들면, 외부 API에 파라미터로 넘겨줄 경우. [A, B, C, D] 라는 데이터를 “A,B,C,D”로 표현하고 싶다. List는 iterator니까… 순서대로 돌면서 각 문자열에 ,를 붙여주면 끝날 것 같다. (단, 마지막에는 ,를 붙이지 않음) 그런데,… 더 보기 »[guava] Joiner 활용 – List를 String으로 concat할 때

[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

HtmlUnit UI-Test for Java Program

최근 프로젝트에서 테스트가 난관에 봉착했다. 스크립트를 파싱하는 자바 로직에 대한 검증이 힘들다는 것인데, 이유는 다음과 같다. – 암호화된 인증 파라미터를 이용하므로 데이터 mocking이 불가능하다. – script 로직이 자바 로직에 영향을 많이 미치는 이상, 자바 로직의 단위 테스트로는 불완전하다. 그래서 몇… 더 보기 »HtmlUnit UI-Test for Java Program