콘텐츠로 건너뛰기

자바

HtmlUnit UI-Test for Java Program

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

enum에서 test coverage 100% 안 됨

자바에서 enum class에 대한 테스트를 모두 해도 100%가 나오지 않는다. (class의 LOC에 따라서 %가 유동적으로 변한다) 그 이유는 enumeration 에서 자동으로 생성하는 hidden byte code가 있기 때문이다. values(), valueOf() 두 가지 메소드를 실행시키면 비로소 coverage 100% 달성된다. 물론, 별 쓰잘데기… 더 보기 »enum에서 test coverage 100% 안 됨

읽기 좋은 테스트 코드 만들기

읽기 좋은 테스트 코드는 마치 책을 읽듯이 그냥 술술 읽으면 로직이 이해되는 그런 코드이다. (물론, 영어를 기준으로 하기 때문에 비영어권 개발자로서 그닥 빠르게 이해되진 않지만-ㅅ-)

위 코드를 아래 코드처럼 수정해봤다.

static final 의 필드 변수를 저렇게(실제로직에는 좀더 많이)… 더 보기 »읽기 좋은 테스트 코드 만들기

테스트케이스에서 파라미터(argument) 체크하기

Mockito에서 mock의 동작을 정의하기 위해 when…thenReturn 구문을 많이 사용한다. 보통, 유연성있는 테스트를 위해서 아래와 같이 코딩을 하게 된다.

위처럼 하게 되면, 어떤 int형태가 들어와도 product를 리턴하게 된다. 물론, 100원을 내더라도 커피를 받을 수 있게 된다. 그래서 테스트를 좀더 강하게… 더 보기 »테스트케이스에서 파라미터(argument) 체크하기

jetty:run 에서 out of memory 발생

Invocation of init method failed; nested exception is java.lang.OutOfMemoryError: Java heap space jetty를 이용해서 웹서버를 구동하는데, 위와 같은 오류가 발생했다. 구글링을 해보니, jetty 옵션으로 메모리 용량을 설정하는 내용이 많이 나온다. 하지만 난 maven 플러그인으로 사용하고 있다. 다시 구글링을 해보니, mvn… 더 보기 »jetty:run 에서 out of memory 발생

java.lang.SecurityException : “org.hamcrest.Matchers”

그동안 mockito만 사용하다가 harmcrest-library를 사용하게 되었다. AssertThat(A, is(B)); 코드를 사용하려면 위 lib가 필요하더라. 그런데 아래와 같은 exception 발생했다.

구글링 결과 두 개의 동일한 lib가 존재해서 충돌나는 것이라고 한다. http://emptylist.wordpress.com/2010/02/14/org-hamcrest-matchers-and-eclipse-java-lang-securityexception/ 알아봤더니 mockito에서 harmcrest core lib를 포함하고 있다. (mockito-all 버전) 그래서… 더 보기 »java.lang.SecurityException : “org.hamcrest.Matchers”

NGINX와 Connection 오류

nginx 라는 초경량화된 웹서버가 있다. 뭐, 아파치랑 비슷한 역할을 하는데, 좀 가볍다는 정도인 듯 하다. 그런데 해당 웹서버를 쓰는 서버에 자바로 http client를 물리니 소켓 커넥션 시에 “Software caused connection abort” 라는 오류 메시지가 나타난다. 구글링을 해보니, ACK가 도달 안하고… 더 보기 »NGINX와 Connection 오류

[ERROR] org.springframework.beans.factory.BeanCreationException

방금 전까지 잘 돌아가던 이클립스+톰캣이었는데, 아무런 이유없이 위같은 exception을 뱉어내면서 톰캣이 뜨지를 않는다. 완전 삽질하다가 결국 톰캣 옵션이 문제인 것을 알았다. 저기에서 Enable security 옵션이 체크되어 있네… -_- (원래 체크 안되어 있었다) 무슨 옵션인지 정확하게는 모르겠지만, 나도 모르는 사이에… 더 보기 »[ERROR] org.springframework.beans.factory.BeanCreationException

long형, Date형 시간을 가지고 변환하기

우리가 알고 있는 시간은 10시10분10초 혹은 10:10:10 이렇게 표현이 되지만, 컴퓨터가 알고 있는 시간은 결국 long 타입이다. 실제로 컴퓨터 시간을 찍어보면 1265275107687 처럼 나온다. (저게 1970년 언제를 기준으로 계속 센 거라나 머라나..-ㅅ-) 여튼 그런데 프로그래밍할 때, 조작해보려면 여간 까다롭지 않다.… 더 보기 »long형, Date형 시간을 가지고 변환하기