일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- SQL
- AWS
- 구현
- 다익스트라
- BFS
- SQL코딩테스트
- 프로그래머스
- 크루스칼
- 배포
- GROUPBY
- Database
- 코딩테스트
- 그래프 탐색
- Pirogramming
- 피로그래밍
- 프림
- 누적합
- MST
- 알고리즘
- Java
- 최단경로
- Baekjoon
- 자바
- 백준
- django
- db
- EC2
- union find
- JOIN
- OrderBy
- Today
- Total
목록프로그래밍 언어/JAVA (8)
NullNull
이 둘은 모두 Mockito 라이브러리를 사용해서 활용할 수 있습니다. 간단하게 어노테이션만 붙여주면서 객체의 동작을 제어할 수 있는데요. 이 두 개념은 비슷하지만 중요한 차이가 존재합니다. 이 글에서는 Mock 과 Spy 의 차이를 비교하고, 어떤 경우에 사용해야 하는지 정리해보겠습니다. 1. Mock vs Spy: 개념적 차이우선 둘은 주로 단위 테스트 에서 사용됩니다.Mock@Mock은 가짜 객체를 생성하는 것입니다.이 객체는 모든 메서드를 모킹하여 실제 동작 없이 지정된 반환 값을 제공합니다. 즉 특정 클래스 안에 있는 모든 메서드는 껍데기만 존재할 뿐 아무 로직이 없다고 가정합니다. Mockito.when()으로 mocking 하지 않는다면, 아무 동작을 수행하지 않게 됩니다. 물론 mocki..

ObjectMother 패턴이란? 우선 해당 패턴이 무엇인지 알아보기 위해 GTP에게 질문을 해보았다. Q: ObjectMother 패턴이 뭐야? A: "Object Mother"는 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 테스트를 위해 객체를 생성하고 설정하는 방법을 정의합니다. 주로 유닛 테스트나 통합 테스트에서 많이 사용됩니다. 일반적으로, 테스트를 작성할 때 객체를 생성하고 초기화하는 것은 반복적이고 번거로운 작업일 수 있습니다. 특히 테스트 케이스마다 다양한 상태의 객체가 필요할 때 이런 문제가 더 커집니다. Object Mother 패턴은 이러한 상황에서 객체 생성 및 초기화를 추상화하여 객체를 쉽게 생성하고 조작할 수 있도록 도와줍니다. 객체를 조금 더 쉽게 생성하..

사전 준비 간단한 Unit Test를 작성해보자. 축구 팀의 선수를 만드는 기능을 테스트 해보겠다. 사전에 준비한 클래스는 다음과 같다. Player Class Player의 정보를 담을 객체이다. package soccer.team.player; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.NoArgsConstructor; @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor public class Player { private String name; private String birthday; private int number; private String ..
객체지향 언어의 특징 캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것 추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것 상속성 : 상위 클래스의 특성을 하위 클래스가 이어 받아서 재사용하거나 추가, 확장하는 것 다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 하나의 객체가 여러 형으로 나타날 수 있는 것 오버로딩 : 같은 이름을 가지는 메서드를 여러개 두는 것 (정적 다형성) 오버라이딩 : 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것 (동적 다형성) 객체지향 설계원칙 (SOLID) SRP: Single Responsibility Principle 단일 책임 하나의 클래스는 한 가지의 책임만을 가져야 한다. 클래..
에러와 예외 에러와 예외 어떤 원인에 의해 오동작 하거나 비정상적으로 종료되는 경우 심각도에 따라 분류 Error 메모리 부족, stack overflow와 같이 일단 발생하면 복구할 수 없는 상황 : 종료를 해야만 한다. 프로그램의 비정상적 종료를 막을 수 없고 → 디버깅 필요 Exception 읽으려는 파일이 없거나, 네트워크 연결이 안되는 등, 비교적 가벼운 상태가 약한 것들 프로그램 코드에 의해 수습될 수 있다. Exception Handling 이러한 Exception을 처리해서 프로그램의 비정상 종료를 막는다. 예외 감지 코드, 예외 발생 시 동작할 코드 필요 Exception Checked Exception 예외에 대한 처리가 없으면 컴파일 자체가 안됨 반드시 throws로 위임 혹은 try..
추상 클래스 (is a) 추상 클래스(abstract class) 미완성된 클래스 다른 클래스를 만들기 위한 보조 클래스 자손 클래스에서 반드시 재정의해서 사용되기 때문에 조상의 구현이 무의미한 메서드 메서드의 선언부만 남기고 구현부는 없음 abstract 키워드를 메서드 선언부에 추가 객체를 생성할 수 없는 클래스가 됐기 때문에 클래스 선언부에 abstract 추가 abstract class Person { public void hello() { return "hi"; } public abstract void walk(); } 추상 클래스의 특징 기본 클래스의 특징을 모두 갖고 있음 상태를 가질 수 있음. (멤버 변수) 추상 메소드를 포함할 수 있음. 없어도 상관은 없다. 직접 객체 생성을 할 수 없다..

노드 스트림 I/O : Data의 입력과 출력 ⇒ input & output 데이터는 한 쪽에서 주고 한 쪽에서 받는 구조로 되어 있음 이 때 입력과 출력의 엔드 포인트를 노드라고 칭함 두 노드를 서로 연결하여 데이터를 전송할 수 있는 개념 : 스트림(Stream) 스트림 두 노드(엔드포인트)를 연결하여 데이터를 전송하는 개념 단방향 통신 하나의 스트림으로 입력과 출력을 같이 처리 불가능 노드의 종류 키보드 모니터 메모리 파일 데이터베이스 네트워크 노드 스트림의 종류 스트림을 통해 흐르는 데이터 타입에 따라서 XXStream → 바이트를 처리 XXer → 캐릭터를 처리 방향에 따라서 InputStream, Reader → 입력 OutputStream, Writer → 출력 노드 타입에 따라서 키보드, F..

Java Data Type Java의 데이터 타입은 크게 2가지로 나뉜다. Primitive Type Reference Type Primitive Type Type Bit 구분 비고 Type Bit 구분 비고 boolean 논리형 byte 8 정수형 short 16 정수형 int 32 정수형 Default long 64 정수형 float 32 실수형 double 64 실수형 Default char 16 문자형 형 변환 변수의 타입을 다른 타입으로 변환하는 것 Primitive 는 Primitive끼리, Reference는 Reference끼리 형 변환이 가능함 Boolean 은 다른 기본 타입과 호환되지 않음 Primitive 타입을 Reference 타입처럼 사용하려면 Wrapper 클래스를 이용함 묵..