일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- db
- 알고리즘
- 배포
- 크루스칼
- 피로그래밍
- Java
- EC2
- Baekjoon
- 프림
- union find
- JOIN
- 다익스트라
- Pirogramming
- AWS
- BFS
- MST
- 백준
- 코딩테스트
- SQL
- 구현
- 자바
- OrderBy
- 그래프 탐색
- Database
- GROUPBY
- 프로그래머스
- 최단경로
- django
- SQL코딩테스트
- 누적합
- Today
- Total
목록프로그래밍 언어 (13)
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 ..

Testing Pyramid Mike Cohn 이 Agile로 거둔 성과이며 이를 개념화 한 내용이다. 아래 계층일 수록 작성해야하는 테스트의 수가 많지만 실행 속도가 가장 빠르고 비용도 저렴하다. 반면에 위의 계층일수록 작성해야 하는 테스트의 수는 적어지지만 실행 리소스가 많이 든다. 밑으로 갈 수록 더 많은 양의 테스트를 작성해야 함 위로 갈 수록 작성이 어렵고 유지보수가 어려움 Unit Test가 작성이 쉽기 때문에 가장 많은 양으로 작성해야함 각 계층에서 테스트 하는 단위와 성격은 아래와 같다. Unit Test 작은 단위(Class, Method 단위)의 기능에 대한 유효성을 검증하는 테스트 Target의 Scope는 엄격하게 정해지지 않음 최대한 간단하고 디버깅하기 쉽게 작성 Integrati..
자바스크립트 데이터 타입 자바스크립트 특징 동적 타이핑 언어 느슨한 타입 체크 언어 데이터 타입 기본 타입 Number String Boolean Null Undefined 참조 타입 기본 타입을 제외한 모든 객체 Number 자바스크립트에서 모든 숫자는 Number Type 다른 언어가 Integer, Float, 등으로 구분되어 있는 것과 다름 String 한 번 선언된 문자열은 수정되지 않음 다른 언어의 char은 자바스크립트에선 길이가 1인 String 과 같음 Boolean True, False 값 Null & Undefined 두 타입 모두 값이 비어 있음을 나타냄. 사용하는 의도에 차이가 있음 Null → 개발자가 의도적으로 값을 비워 둠. Null의 타입은 Object Undefined →..
변수 선언 (Variable Declaration) 자바스크립트는 변수 선언을 할 때 타 언어와 다르게 type을 명시할 필요가 없다. C나 Java 등 대부분의 언어는 변수를 선언할 때 변수 안에 담기는 값의 type을 고려하여 변수를 선언한다. // C언어 int num1 = 1; char char1 = 'a'; 하지만 자바스크립트는 number, string, boolean 과 같이 다른 type의 값들도 모두 같은 키워드를 사용하여 변수를 선언한다. 즉 변수를 선언할 때 type을 고려하지 않는다. 자바스크립트는 변수의 사용 조건을 고려하여 변수를 선언해야하고 고려해야하는 조건의 내용은 다음과 같다. 중복 선언 가능 여부 재할당 가능 여부 변수 스코프 유효 범위 변수 호이스팅 방식 ..

프로세스, 스레드, Go routine 프로그램 : 프로세스의 명령어와 사용자 데이터를 초기화하는데 사용할 명령어와 데이터를 담은 파일 프로세스 : 명령어, 사용자 데이터, 시스템 영역, 실행 과정에 수집한 다양한 종류의 리소스로 구성된 독립적인 실행 단위 스레드 : 프로그램이나 프로세스보다 좀 더 가볍고 작은 실행 단위. 프로세스에 의해 생성되며 독립적인 제어 흐름과 스택을 가짐 Go routine : Go 프로그램에서 동시에 실행할 수 있는 최소 단위. OS가 아닌 프로그램에서 Time-Sharing이 이루어짐 프로세스나 스레드를 OS에 요청하지 않고, 자체적으로 해결함. 프로세스, 스레드의 Context Switching 보다 비용적으로 우수함 프로세스나 스레드에 종속되지 않으므로, 1개의 스레드에..

defer 함수나 코드의 실행을 가장 마지막까지 미룰 수 있음 defer 키워드가 있는 함수나 코드는 실행이 바로 되지 않고 그 함수의 실행이 끝난 후 LIFO 방식으로 실행됨 package main import "fmt" func d1() { fmt.Println("d1 function") for i := 3; i > 0; i-- { defer fmt.Print(i, " ") } } func d2() { fmt.Println("d2 function") for i := 3; i > 0; i-- { defer func() { fmt.Print(i, " ") }() } } func d3() { fmt.Println("d3 function") for i := 3; i > 0; i-- { defer func(n..
객체지향 언어의 특징 캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것 추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것 상속성 : 상위 클래스의 특성을 하위 클래스가 이어 받아서 재사용하거나 추가, 확장하는 것 다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 하나의 객체가 여러 형으로 나타날 수 있는 것 오버로딩 : 같은 이름을 가지는 메서드를 여러개 두는 것 (정적 다형성) 오버라이딩 : 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것 (동적 다형성) 객체지향 설계원칙 (SOLID) SRP: Single Responsibility Principle 단일 책임 하나의 클래스는 한 가지의 책임만을 가져야 한다. 클래..
에러와 예외 에러와 예외 어떤 원인에 의해 오동작 하거나 비정상적으로 종료되는 경우 심각도에 따라 분류 Error 메모리 부족, stack overflow와 같이 일단 발생하면 복구할 수 없는 상황 : 종료를 해야만 한다. 프로그램의 비정상적 종료를 막을 수 없고 → 디버깅 필요 Exception 읽으려는 파일이 없거나, 네트워크 연결이 안되는 등, 비교적 가벼운 상태가 약한 것들 프로그램 코드에 의해 수습될 수 있다. Exception Handling 이러한 Exception을 처리해서 프로그램의 비정상 종료를 막는다. 예외 감지 코드, 예외 발생 시 동작할 코드 필요 Exception Checked Exception 예외에 대한 처리가 없으면 컴파일 자체가 안됨 반드시 throws로 위임 혹은 try..