반응형
- private method test 기능을 테스트할까? 구현을 테스트할까?2021-07-12 21:56:29서비스 레이어에서 테스트를 작성하다 private 메서드 테스트의 범위는 어디까지가 적당할까 라는 생각이 들었다. OKKYCon TDD 레퍼런스에서 구현을 테스트하지말고 기능을 테스트 해야한다는 발표를 봤던 것이 생각나서 의문이 들었다. Junit에서 private 메서드를 테스트 할 때 Reflection으로 해당 메서드를 받아와서 실행시킨 결과를 테스트하는 코드를 작성하는데 문제는 이 멤버 메서드를 가진 Service클래스 구현체가 다른 것으로 바뀐다면 바뀐 구현체의 public 메서드에서 별도로 추출한 private 메서드가 생길 것이고 기존의 사용하던 구현체의 private 메서드와 이름과 파라미터가 같지 않으면 테스트가 깨질 것이다. 코드를 통해 예시를 보자면 TestService라는 인터페이스..
- Iterator 정리2021-05-15 11:05:45오늘은 자바에서 컬렉션 프레임 워크에 저장된 요소를 읽어오는 방법 중 자주 쓰이는 Iterator 인터페이스에 대해 정리해 보겠습니다. 우선 Iterator 인터페이스 내부를 한 번 들여다 보겠습니다. hasNext next remove forEachRemaining 위 4개의 함수가 있네요. 설명을 보면 hasNext는 iteration에 다음 요소가 존재하는지의 여부를 boolean으로 반환하고 next는 해당 iterator에서 다음 요소를 반환합니다. remove는 iteration에서 반환된 마지막 요소를 내부 컬렉션에서 제고하는 역할을 합니다. next()호출마다 한번만 호출 가능하며, 반복이 진행되는 동안 이것 이외의 방법으로 컬렉션이 수정되면 동작이 지정되지 않는다고 설명하고 있습니다. f..
- Comparable와 Comparator 정리2021-04-14 00:30:14오늘은 Comparable과 Comparator의 차이와 그 사용법에 대해 정리해 보겠습니다 우선 java에서 제공되는 정렬이 가능한 클래스들은 모두 Comparable을 구현하고 내부적으로 compareTo()메서드를 재정의 해 구현 방식에 따라 정렬을 수행합니다. 이것들이 내부적으로 Comparable을 구현하고 있습니다. Integer 클래스를 예로 보면 이런식으로 구현하고 있죠? 이렇게 구현한 클래스를 사용하는 방법으로는 다음 두 가지가 있습니다. Arrays.sort() Collections.sort() 두 개의 차이는 Arrays.sort()에 경우 primitive array와 object array둘 다 동작할 수 있도록 내부적으로 구현이 되어 있고 Collections.sort()는 Li..
- Shallow Copy & Deep Copy2021-04-13 23:48:49얕은복사와 깊은복사에 대해 알아봅시다. 얕은 복사 한 쪽에서 수정이 발생되면 복사한 객체에도 영향을 준다. 얕은 복사가 참조값을 복사하기 때문에 복사한 객체도 같은 참조값을 가지므로 수정이 반영되는 것 깊은 복사 참조값을 복사하는 것이 아니라 , 원본 객체의 내부 객체의 값까지 복사해서 힙 영역에 객체를 새로 만드는 것으로 수정이 일어나도 원본과는 관계가 없다. 위의 클래스처럼 clone을 재정의한 클래스를 가지고 비교해보겠다. 실행 결과를 보면 clone을 통해 복사한 객체가 얕은 복사라는 것을 알 수 있다. 여기서 생각드는건 내가 객체를 복사할 때 대부분 원본에 복사본의 수정사항을 반영하고 싶을리가 없다는 거다. 그렇다면 clone을 주의해서 재정의해보자. 이처럼 객체 복사시에 의도적으로 얕은 복사를..
반응형