반응형 Back/Java14 JUnit, AssertJ를 활용한 Test 연습 기존 Main method를 통한 테스트는 몇 가지 문제점이 있었다. 이 문제점을 해결하기 위해 등장한 도구가 JUnit이다.Main method 테스트의 문제점Production code와 Test code가 클래스 하나에 존재하여 클래스 크기가 커지고 복잡도가 증가한다.Test code가 실제 서비스에 같이 배포되버린다.main method 하나에서 여러 개의 기능을 테스트하기 때문에 복잡도가 증가한다.method 이름을 통해 어떤 부분을 테스트하는지 의도가 불분명하다.테스트 결과를 개발자가 수동으로 확인해야 한다.테스트 연습 1 (assertThatThrownBy 연습)예외를 발생시켜야만 아래 테스트가 통과된다.@Test@DisplayName("예외 발생 시 StringIndexOutOfBounds.. 2023. 2. 20. 클린코드는 왜 중요한가 객체 지향 설계에서 어려운 점은 소스 코드 중 문제가 있는 부분을 찾는 것이고, 어떻게 리팩터링을 할 것인지는 그 다음 이슈이다.대신 코딩해주는 AI들이 떠오르는 화두이지만 그렇다고 하더라도 코드는 항상 존재할 수밖에 없다. 그러므로 개발자는 클린 코드에 항상 관심을 가져야 한다. 클린 코드를 고려하지 않고 개발하면 당장은 빠르게, 생산성 높게 개발할 수 있겠지만 시간이 지날수록 생산성이 떨어지기 마련이다.결국엔 갈수록 치우기 어려운 거대한 똥을 쌓아나가는 셈이다.실무자는 현저하게 떨어진 생산성에 고통받아 재설계를 고려하며 제안하게 되고 관리자는 악화되는 상황에 어쩔 수 없이 뒤늦게 재설계를 허락한다. 클린 코드는 운동과도 같다. 하루 이틀 연습하여 구현한다고 한들 소용없다. 지속적으로 훈련하며 적용시켜.. 2023. 2. 20. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests 회사에서 Spring 프로젝트 템플릿을 받아보았는데 고칠게 많아 보인다.. 우선 테스트 코드를 작성하고 있지 않은 것 같아서 1도 모르긴 하지만 내가 공부해서 도입해보려고 한다. Spring 프로젝트 템플릿에 테스트 코드를 시도하는 중에 다음과 같은 에러 문구가 발생했다. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests .... 찾아보니 Junit의 의존성 관련 문제인 거 같아서 maven에 일단 Junit 관련된 의존성이 뭐뭐 있나 들여다보고 이것저것 건들건들했다. 확인해보니 Junit 관련된 건 아래 하나밖에 없었다. org.springframework.boot sp.. 2022. 12. 20. 빌더 패턴 (Builder Pattern) 정의 GoF 디자인 패턴 중 생성 패턴에 해당한다고 한다. 기존에 자바에서 객체를 생성하는 방법은 new 클래스로 인스턴스를 생성하고 참조 변수에 담아줬고, 이 과정에서 생성자가 필요로 하는 파라미터들을 담아서 생성했다. - 생성자에 파라미터를 넣는 방법 User user = new User("chris", 31, 123, 456); 이 방식의 단점은 1. 해당 객체의 필드가 많으면 그만큼 객체 생성의 경우에 수에 맞게 생성자를 전부 만들어줘야 한다. 2. 123, 456이 대체 뭔 값인지 저것만 보고는 알 수가 없다. = 파라미터의 의미를 분간할 수 없다. = 가독성이 떨어진다. - Setter User user = new User(); user.setName("chris"); user.setAge(31);.. 2022. 12. 17. HTTP & Servlet & Servlet Container 설명에 필요한 몇 가지 용어들 먼저 알아보면, w3 : www, World Wide Web, 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적 정보 공간Protocol : 컴퓨터 내부, 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계, 규칙의 집합, 규약HTTP는 전 세계적 정보 공간에서 정보를 주고받을 수 있는 데이터 교환에 대한 규약이다.HTTP는 클라이언트와 서버 사이에서 이루어지는 요청(request)과 응답(response) 규약이다. 조금 더 풀어보면 인터넷 브라우저가 HTTP를 통해 서버에 웹페이지(HTML)나 데이터(그림이나, 글 같은)를 요청하게 되면, 서버는 이 요청에 응답하여 클라이언트(유저)에게 요청받은 데이터를 응답해준다. 이 데이터를 모니터(출력장치.. 2022. 11. 7. ArrayList vs LinkedList 비교 - ArrayList 먼저 ArrayList는 아마 컬렉션 프레임워크에서 가장 많이 사용되고 있을 것 같다. 주요 특징으로는 데이터의 저장 순서 유지, 중복 허용이다. 기존부터 있던 Vector를 개선한 것이라고 하는데 Vector가 아직 있는 건 이전에 작성된 코드와의 호환성 때문이라고 하니깐 가능하면 그냥 ArrayList를 쓰는 게 나을 것 같다. ArrayList는 배열에 더 이상 저장할 공간이 없으면 보다 큰 배열을 새로 생성해서 기존 꺼를 새 배열에 복사하는 로직이다. 이 부분에서 벌써부터 뭔가 비효율적일 것 같다는 느낌이 든다. - LinkedList 배열은 기본적으로 구조가 간단하면서 사용하기가 어렵지 않고 데이터를 읽어오는데 걸리는 시간도 짧은 편이라는 장점이 있지만 크기를 변경할 수 없.. 2022. 11. 1. 이전 1 2 3 다음