일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- Pirogramming
- 자바
- 피로그래밍
- 최단경로
- Database
- AWS
- django
- BFS
- 알고리즘
- 프로그래머스
- JOIN
- 코딩테스트
- 배포
- 다익스트라
- 백준
- OrderBy
- 구현
- Baekjoon
- 크루스칼
- EC2
- 프림
- SQL코딩테스트
- db
- GROUPBY
- union find
- 그래프 탐색
- 누적합
- MST
- SQL
- Today
- Total
목록분류 전체보기 (103)
NullNull
이 둘은 모두 Mockito 라이브러리를 사용해서 활용할 수 있습니다. 간단하게 어노테이션만 붙여주면서 객체의 동작을 제어할 수 있는데요. 이 두 개념은 비슷하지만 중요한 차이가 존재합니다. 이 글에서는 Mock 과 Spy 의 차이를 비교하고, 어떤 경우에 사용해야 하는지 정리해보겠습니다. 1. Mock vs Spy: 개념적 차이우선 둘은 주로 단위 테스트 에서 사용됩니다.Mock@Mock은 가짜 객체를 생성하는 것입니다.이 객체는 모든 메서드를 모킹하여 실제 동작 없이 지정된 반환 값을 제공합니다. 즉 특정 클래스 안에 있는 모든 메서드는 껍데기만 존재할 뿐 아무 로직이 없다고 가정합니다. Mockito.when()으로 mocking 하지 않는다면, 아무 동작을 수행하지 않게 됩니다. 물론 mocki..
Python 쓰레드 관련 코드를 작성하다가 예상치 못한 상황을 맞이했다. 우선 코드부터 보자 import threading import time import random def sub_task(idx, timeout): print("subtask started " + str(idx)) time.sleep(timeout) print("subtask finished " + str(idx)) def main_thread(): print("main thread started") for i in range(10): thread = threading.Thread(target = sub_task, args = (i, random.randint(1, 10))) thread.start() print("main threa..

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..
P14950 정복자 Java 14950번: 정복자 서강 나라는 N개의 도시와 M개의 도로로 이루어졌다. 모든 도시의 쌍에는 그 도시를 연결하는 도로로 구성된 경로가 있다. 각 도로는 양방향 도로이며, 각 도로는 사용하는데 필요한 비용이 존재 www.acmicpc.net 문제 서강 나라는 N개의 도시와 M개의 도로로 이루어졌다. 모든 도시의 쌍에는 그 도시를 연결하는 도로로 구성된 경로가 있다. 각 도로는 양방향 도로이며, 각 도로는 사용하는데 필요한 비용이 존재한다. 각각 도시는 1번부터 N번까지 번호가 붙여져 있다. 그 중에서 1번 도시의 군주 박건은 모든 도시를 정복하고 싶어한다. 처음 점거하고 있는 도시는 1번 도시 뿐이다. 만약 특정 도시 B를 정복하고 싶다면, B와 도로로 연결된 도시들 중에서 ..
P5052 전화번호 목록 Java 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다. 예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자. 긴급전화: 911 상근: 97 625 999 선영: 91 12 54 26 이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 ..

P14725 개미굴 Java 14725번: 개미굴 첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N개가 주어진다. (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 www.acmicpc.net 문제 개미는(뚠뚠) 오늘도(뚠뚠) 열심히(뚠뚠) 일을 하네. 개미는 아무말도 하지 않지만 땀을 뻘뻘 흘리면서 매일 매일을 살길 위해서 열심히 일을 하네. 한 치 앞도(뚠뚠) 모르는(뚠뚠) 험한 이 세상(뚠뚠) 그렇지만(뚠뚠) 오늘도 행복한 개미들! 우리의 천재 공학자 윤수는 이 개미들이 왜 행복한지 궁금해졌다. 행복의 비결이 개미가 사는 개미굴에 있다고 생각한 윤수는 개미굴의 구조를 알아보기 위해 로봇 개미를 만들었다. ..
P7432 디스크 트리 7432번: 디스크 트리 갑자기 맥북이 상근이의 손에서 떨어졌고, 화면이 켜지지 않았다. AS센터에 문의해보니 수리비가 97만원이 나왔고, 상근이는 큰 혼란에 빠졌다. 돈도 중요하지만, 상근이는 그 속에 들어있는 파 www.acmicpc.net 문제 갑자기 맥북이 상근이의 손에서 떨어졌고, 화면이 켜지지 않았다. AS센터에 문의해보니 수리비가 97만원이 나왔고, 상근이는 큰 혼란에 빠졌다. 돈도 중요하지만, 상근이는 그 속에 들어있는 파일이 걱정되기 시작했다. 다행히 상근이는 저장되어 있는 중요한 디렉토리의 전체 경로를 텍스트 파일로 따로 저장하고 있었다. 예를 들면, WINNT\SYSTEM32\CERTSRV\CERTCO~1\X86. 상근이의 중요한 디렉토리의 전체 경로가 모두 주..

트라이 자료구조 트라이(Trie)는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다. 문자열을 한 자리씩 뽑아내어 트리 형태로 저장한다. 각 노드의 자식들을 탐색하며 저장된 문자열을 얻는다. 즉, 트리의 형태로 문자열을 저장하고 탐색할 수 있는 자료구조가 트라이이며 각 노드의 자식들에는 다음에 나올 문자에 대한 노드가 연결되어 있다. 트라이 시간복잡도 트라이는 주로 많은 문자열들을 저장한 뒤에 특정 문자열이 그 안에 속하는지를 확인할 때 많이 사용된다. 예를 들어 길이가 L인 문자열 M개를 저장해두고 길이가 L인 임의의 문자열 A가 M개 안에 속해있는지 확인한다고 가정해 보자. 저장 시 시간복잡도 : O(L * M) 한 개의 문자열을 저장할 때 L만큼의 시간이 걸린다. 문자열을 문자의..