Java 37

[Spring] MockMvc 테스트에서 Model 전달

질문 상세 페이지를 테스트할 때, 컨트롤러에서는 질문의 내용을 모델에 담아 전달해 템플릿 엔진을 통해 출력했다. 테스트 코드에서 모델에 담아 전달할 방법이 어떻게 되는지 찾아봤는데, Model을 선언하고 넘길 수 있는 코드는 보이지 않았다. 생성된 객체를 전달하기 질문을 생성하고 질문의 상세 페이지를 접근하는 테스트코드를 작성할 때, 먼저, get을 통해 URI를 설정하고 접근할 것이다. 이 때, 생성된 질문을 전달해주기 위해서 flashAttr() 메서드를 사용한다. flashAttr() 메서드에 객체 이름과 생성된 객체를 전달해준다. mockMvc.perform(MockMvcRequestBuilders .get(String.format("/questions/%d", newQuestion.getId()..

Java/Spring 2021.07.13

[Spring] Test 코드에서 session 전달하기

스프링 웹 프로젝트에서 세션 기반의 로그인을 구현하고, 로그인한 회원에게만 질문 등록과 같은 특정한 기능을 제공하도록 로직을 구현했다. 세션은 HttpSession 객체를 파라미터로 전달하는데 테스트 상황에서는 적용되지 않았다. 테스트 코드에서 세션 사용 테스트 코드에서 Session을 사용하는 방식은 MockHttpSession을 통해 세션을 사용한다. MockHttpSession session = new MockHttpSession(); 사용방식은 기존의 세션과 동일하게 setAttribute(), getAttribute()와 같은 메서드를 활용할 수 있다. 이제, 생성된 세션에서 유저정보를 불어오는 것은 getAttribute 메서드를 통해 가져올 수 있다. 그렇다면, Controller에서 세션 ..

Java/Spring 2021.07.12

[Java Spring] Controller 구현 후 404 Error

Spring boot 프로젝트를 진행하다가 컨트롤러를 구현하고 이에 맞는 html 파일을 templates 경로에 생성했는데 404 Error가 발생함. (URL 확인, HTML 생성, Controller 확인) 해결 방법 1 이 때, application.properties 에 아래 코드를 추가하면 해결됨. spring.mustache.suffix=.html mustache를 템플릿 엔진으로 사용하는 프로젝트에서 위 설정을 해줘야 하는 듯 하다. 해결 방법 2 mustache는 기본적으로 .mustache 파일 확장자 명을 갖는다. 확장자를 html이 아닌 mustache로 설정해서 파일을 생성한다. 만약 itellij에 플러그인이 설치되어 있지 않으면 플러그인 설치. (아이콘이 수염달린 아이콘이어야 ..

Java/Spring 2021.06.21

[JAVA] JAVA에서 순열 (Permutation)

참고 사이트 순열 Permutation (Java) 순열 연습 문제 순열이란 n 개의 값 중에서 r 개의 숫자를 모든 순서대로 뽑는 경우를 말합니다. 예를 들어 [1, 2, 3] 이라는 3 개의 배열에서 2 개의 숫자를 뽑는 경우는 [1, 2] [1, 3] [2, 1] [2, 3] [3, bcp0109.tistory.com 순열 n개의 원소 중에서 r개를 순서대로 뽑는 경우의 수 Swap을 이용한 순열 배열의 첫번째 값부터 순서대로 하나씩 바꾸며 모든 값을 한번씩 swap한다. depth 기준 인덱스로 이보다 인덱스가 작으면 고정, 큰 값들만으로 swap 순열의 순서가 보장되지 않는다. import java.util.*; public class Main { // r은 몇개 꺼낼지 public static..

Java 2021.06.02

[Spring-boot] H2 데이터베이스 연결하기

H2 DB H2 데이터베이스는 MySQL 기반으로 동작하며, 메모리 내 데이터베이스로 동작할 수 있다. 디스크에 저장할 수도 있다. 브라우저 기반의 콘솔까지 지원한다. build.gradle 설정 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' } application.properties 설정 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.pa..

Java/Spring 2021.06.01

[JAVA] JAVA에서 조합 (Combination)

참고 자료 [Java] 조합 Combination 조합 조합이란 n 개의 숫자 중에서 r 개의 수를 순서 없이 뽑는 경우를 말한다. (위키백과 - 수학에서 조합은 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것이다. 그 경우의 minhamina.tistory.com 조합 n개의 원소 중에서 r개를 순서 없이 뽑는 경우의 수 ( nCr ) 하나의 원소를 선택할 경우의 수와 하나의 원소를 선택하지 않을 경우의 수의 합으로 나타낼 수 있다. 하나의 원소를 선택하는 경우 : n개의 원소 중에서 1개를 꼭 뽑는다고 생각하고 r-1개를 채우는 경우 하나의 원소를 선택하지 않을 경우 : n개의 원소 중에서 1개를 꼭 뽑지 않는다고 생각하고 r개를 채우는 경우 예를 들어 {1, 2, 3} 원소를 가진..

Java 2021.06.01

[Java Spring] 프로젝트 생성 후 테스트 코드

테스트 주도 개발은 아니여도 단위 테스트는 작성하는 것이 좋다. Testing the Web Layer this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team spring.io 간단한 index 페이지를 불러오는 Controller 작성 후 테스트 코드 1. 웹 애플리케이션이 동작하는지 확인하는 테스트 package kr.scene.board; import kr.scene.board.controller.BoardController; import org.junit.jupite..

Java/Spring 2021.05.30

[Java] 열거형 enums

열거형이란? 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것, 여러 상수를 정의할 때 사용하면 유용하다. 열거형 정의 열거형 Direction의 선언에서 상수 하나하나는 각각 Direction 객체다. // enum 열거형이름 { 상수명1, 상수명2, ... } enum Direction { EAST, SOUTH, WEST, NORTH } 열거형 사용 열거형은 '열거형이름.상수명'으로 사용가능하다. // '열거형이름.상수명' class Unit { int x, y; Direction dir; void init() { this.dir = Direction.EAST; } } 열거형 상수간의 비교에는 '==' 비교 연산자를 사용할 수 있다. '' 와 같은 비교연산자는 사용할 수 없고 compareTo(..

Java 2021.05.28
반응형