728x90
반응형

Java 27

MockMvc

MockMvc MockMvc란 실제 객체와 비슷한데 Test를 할때 필요한 기능만 가지는 가짜 객체를 만들어 스프링MVC 동작을 재현할 수 있는 클래스이다. build.gradle testCompile('org.springframework.boot:spring-boot-starter-test') 의존성을 추가해준다. 가장 간단한 GET방식을 알아볼 것인데, Http Method의 post, put, patch, delete 들은 어디서 넣으면 테스트 할 수 있는지 별도의 주석으로 첨부하도록 하겠다. Controller 추가 일단 Controller를 추가해준다. @RestController public class MockTestController{ @GetMapping("/mockTest"..

Java 2022.08.04

Mock, Mockito

Mock Mock이란 테스트 더블 이라고도 하며, 실제 사용되어야 하는 객체의 대역을 의미한다. Mock객체는 대상의 행위를 검증하는데에 있어서 사용하기 때문에 객체가 가지고 있어야하는 기본 정보를 반드시 가지고 있다. 테스트를 해야하는 어떠한 객체를 검증해야 할 경우 그 객체가 가지고 있는 정보들을 미리 갖고 있어야 한다. Mock객체를 직접 생성하는 경우에는 일일이 클래스를 만들기 어려울 것이다. 그러므로 우리는 Mockito라는 라이브러리를 이용한다. Mockito란? 단위 테스트를 위한 Java Mocking Framework이다. 또한 Mockito는 Junit위에서 동작하며 Mocking과 Verification을 도와주는 Framework이다. 의존성 추가 build.gradle에 다음과 같..

Java 2022.08.04

[Java] Enum

Enum 소스코드를 분석을 하다 보니 너무 많은 if-else 가 엮여져 있는 코드들을 많이 봐서 너무 어지러웠다. 이것을 어떻게 할 수 없을까에 대한 고찰을 가지고 있다가 처음엔 switch조건을 생각해서 메소드로 따로 빼내자고만 생각했다. 근데 Enum을 찾아본 결과 너무 좋아서 포스팅하게 되었다. Enum이란 Enum은 Eumeration로 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미한다. 자바에서 final static String, int와 같이 문자열이나 숫자들을 나타내는 기본자료형의 값을 Enum으로 대체해서 사용할 수 있다. 인터페이스나 클래스로 상수를 정의하는 것을 보완하여 IDE의 지원을 적극적으로 받고 타입 안정성도 갖출 수 있게 된다. 예를 들면 이런 코드였다. Strin..

Java 2022.08.03

[Java] Optional

오늘은 Java 8버전에 추가된 Optional을 알아보자. 프로그래밍을 함에 있어서 NullPointerException은 계속 만나게 되는데 이유는 null을 반환하거나, null 체크를 깜빡하고 진행하지 않았을때 두 가지로 나눌 수 있다. 메소드에서 작업 중에 특별한 상황에서 값을 제대로 반환할 수 없는 경우 선택 방법 예외처리를 한다.(비싸다, stackTrace를 사용) null을 그대로 반환. (비용에는 문제가 없지만, 그 코드를 사용하는 클라이언트에서 주의해서 사용해야한다) Optional을 반환한다.(Java 8버전부터) 클라이언트의 코드에게 명시적으로 빈 값일 수도 있다는 것을 알려주고, 빈 값인 경우 처리를 강제함) Optional이란? 오직 값 한 개가 들어있을 수도 없을 수도 있는 ..

Java 2022.08.03

Java Stream API

Java Stream API Java Stream Java를 다시 공부하면서 Java8에 추가된 기능중 Stream이라는 API의 기능이 있었지만 무엇인지, 어떻게 사용하는지 내가 직접 구현해보지도 않아서 그리고 막상 사용한 예들을 보니까 내 코드를 더 간결하게 만들 수 있을거란 생각이 들었다. 그래서 공부를 진행하였다. Stream은 위에서도 말했듯, Java 8 버전 부터 추가된 기능이고, 컬렉션이나 배열 등의 저장요소를 하나씩 참조하여 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리하게 해주는 기능이다. 처음에 남들과 같이 Stream이 InputStream, OutputStream같은 I/O Stream인줄 알았지만 그런 Stream은 아니다. 아래의 예를 보면 얼마나 가독성도 좋고 문법이 ..

Java 2022.08.03

[Java] 디자인패턴 - 싱글톤 패턴

싱글톤패턴(Singleton Pattern) 싱글톤패턴 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴이다. 생성자가 여러번 호출이 되더라도 실제로 생성되는 객체는 하나뿐이고, 최초로 생성된 이후에 호출된 생성자는 생성된 최초 객체를 반환한다. 그래서 생성자를 private로 선언하여 getInstance()로 받아서 사용한다. 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다. 이말은 인스턴스가 필요할 때마다 똑같은 인스턴스를 new해서 생성하는 것이 아닌 기존에 존재하는 인스턴스를 사용하게 하는것이다. 싱글톤패턴을 사용하는 이유 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비..

Java 2022.08.03

CallByValue, CallByReference 비교

Call By Value(값에 의한 호출) call by value 는 가장 일반적인 함수 호출형태로 값을 복사하는 것이다. 예시 public class CallByValue{ public static void swap(int x, int y){ int temp = x; x = y; y = temp; } public static void main(String[] args){ int a = 10; int b = 20; System.out.println("swap() 호출 전 : a = " + a + ", b = " + b); swap(a, b); System.out.println("swap() 호출 후 : a = " + a + ", b = " + b); } } 결과는 아래와 같다 swap() 호출 전 : ..

Java 2022.08.03
728x90
반응형