목록나의보물들 (119)
솔솔

시스템 환경Java 17Spring boot 3.4.3Gradle 8.1테스트 프레임워크Junit5AssertJ 🍀 Mockito란?Java 기반의 단위 테스트 프레임워크로, 실제 객체 대신 Mock 객체(가짜 객체)를 생성하여 테스트를 쉽게 작성하고 독립적으로 실행할 수 있도록 도와줌 https://site.mockito.org/ Mockito framework siteIntro Why How More Who Links Training Why drink it? Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with a clean & simple API. Mockito doesn’t giv..

🍀 Layered Architecture란?Layered Architecture(계층화 아키텍처)는 소프트웨어 시스템의 구성 요소를 목표한 대상의 역할과 책임에 따라 계층별로 분리(서로 독립적으로 동작)하여 설계하는 아키텍처 패턴이다. 먼저 "아키텍처"라는 용어의 본질을 살펴보면,"목표한 대상의 구성과 동작 원리, 관계, 환경 등을 설명하는 설계도" 즉, 소프트웨어 아키텍처는 시스템이 목표로 하는 동작과 목적을 달성하기 위해 구성 요소(모듈) 간의 역할, 책임, 그리고 상호작용을 명확히 정의하는 체계를 의미한다. 🍀 3-Layer Architecture 와 3-Tier Architecture 차이* 둘다 자주 쓰는 용어인데 헷갈려서 정확히 구분하기 위해 찾아봄 3-Tier Architect..

🍀 들어가기지금까지 API를 테스트할 때 주로 Postman이나 Swagger를 활용해왔다.직관적이고 간편한 사용법 덕분에 나 포함 많은 개발자들이 사용하는 것 같다. 하지만 이번에 IntelliJ HTTP Client를 알게 되었고,사용해본 결과 Postman이나 Swagger보다 개인적으로 편한점들이 많았다.(사용목적에 따라 편하기는 달라지는 듯) IDE 내부에서 바로 API를 테스트하고 결과를 확인할 수 있는 점이 가장 큰 매력이었고,코드처럼 관리할 수 있다는 점도 큰 장점이였다. 🍀 IntelliJ HTTP Client란?IntelliJ IDEA에 내장된 HTTP 요청 및 API 테스트 도구이다.이 도구를 사용하면 IDE 환경에서 바로 HTTP 요청을 작성, 실행, 테스트할 수 있어, 별도..

🍀 들어가기아래와 같은 코드로 테스트를 진행을 하는데// Test 코드@SpringBootTestclass OrderServiceTest { @Autowired private StockRepository stockRepository; @Autowired private OrderService orderService; @DisplayName("재고와 관련된 상품이 포함되어 있는 주문번호 리스트를 받아 주문을 생성한다") @Test void createOderWithStock() { ...(생략) stockRepository.save(stock); orderService.createOrder(request) ..

🍀 들어가기Spring Boot에서 테스트를 공부하다보면,Spirngframwork에서 제공하는 다양한 테스트 어노테이션을 접하게 된다. 그중에서도import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @SpringBootTest와 @DataJpaTest를 볼 수 가 있다. 처음 테스트를 실행해 보면 두 어노테이션의 차이가 크게 느껴지지 않을 수 있지만,실제로는 중요한 차이가 있다. 🍀 @SpringBootTest@SpringBootTestclass OrderServiceTest { @Autowired pri..

🍀 들어가기에 앞서테스트 공부를 하다가테스트 케이스를 세분화를 하면서 궁금증이 생겼다. (어디까지 세분화 해야되는 것인가?) 아래 처럼 이러한 기능의 함수가 있다면public void add(Beverage beverage, int count) { if (count 모든 경계값(0, -1..)에 대해서도 테스트 케이스를 세분화해서 만들어야 되는건지// 경계값 0에 대한 테스트 함수@Testvoid addZeroBeverages() {... (생략)}// 경계값 -1에 대한 테스트 함수@Testvoid addNegativeOneBeverages() {... (생략)} 아니면 테스트 케이스 하나를 만들어서 그안에 값을 변경하면서 테스트해야되는건지 궁금했다.@Testvoid addZeroAndNe..

🍀 Scanner 특징다양한 타입(int, double, String 등)으로 직접 변환 가능공백(띄어쓰기, 개행) 기준으로 자동 구분하여 입력 처리내부적으로 정규 표현식을 사용하기 때문에 다소 느림사용법 import java.util.Scanner;public class Input { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str_input = sc.next(); // 문자열 입력 받기 int int_input = sc.nextInt(); // 정수 입력 받기 double double_input = sc.nextDouble(); // 실수 ..

🌵 문제 풀이1. N의 범위가 1부터 100까지 int형(-2,147,483,648 ~ 2,147,483,647), long형(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)과 같은 수 자로 담을 수 없음String형으로 입력값을 받은 후 문자 배열로 반환해서 문자 배열값을 순서대로 읽으면서 숫자형으로 더하는 방법 선택 (toCharArray() 함수 활용)2. 문자열 → 숫자형으로 변형아스키코드 이용'1'은 아스키코드 값이 49이므로 '1'을 숫자로 변환하려면 '1' - 48 = 1또는 '1' - '0'으로 변형해서 계산 🌵 제출 코드import java.util.Scanner;public class Main { public ..