Spring Boot Admin Server, Client config 설정하기

이미지
 Spring Boot로 많은 프로젝트를 진행하게 됩니다. 많은 모니터링 도구가 있지만, Spring Boot 어플리케이션을 쉽게 모니터링 할 수 있는 방법을 소개하려고 합니다.   코드 중심으로 살펴보겠습니다. 1. 어드민 서버 구축 1-1. 디펜던시 추가 dependencies { // https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server implementation 'de.codecentric:spring-boot-admin-starter-server:2.5.4' } 1-2. 어드민 서버 설정 활성화 @SpringBootApplication @EnableAdminServer public class ServerApplication { public static void main (String[] args) { SpringApplication. run (ServerApplication. class, args) ; } } EnableAdminServer를 하면 됩니다. 2. 클라이언트 서버 설정  예제는 book-client, member-client 2가지 클라이언트, member-client가 2개의 인스턴스 실행으로 작성했습니다.  2-1 디펜던시 추가 dependencies { // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web implementation 'org.springframework.boot:spring-boot-starter-web:2.5.4' // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator implementation 'org.spring...

자바 Junit static 함수 Mocking

   지난번에 spring bean을 mocking 하는 코드는 작성했었는데, 이번에는 static함수를 응답을 mocking해보겠습니다.


1. 의존성 주입

testCompile group: 'junit', name: 'junit', version: '4.12'
testImplementation 'org.mockito:mockito-inline:3.6.0'
testImplementation 'org.mockito:mockito-core:3.6.0'
testImplementation 'org.easytesting:fest-assert:1.4'

static을 mocking하기 위해서는 mockito 3.4버전 이상부터 사용해야 합니다. mockito-inline가 추가되었습니다. (fest-assert는 필수아님)


2. static 함수 클래스 정의

public class AutoIncrement {

private static int i = 0;

public static int getId() {
return i++;
}
}

getId를 하면 숫자를 순자적으로 반환하는 함수입니다. 특별한 의미는 없습니다.


3. 테스트 코드 작성

import com.hevia.example.AutoIncrement;
import org.junit.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;

import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.BDDMockito.given;

public class MockStaticTest {

@Test
public void mockStaticTest() {
try (MockedStatic<AutoIncrement> ai = Mockito.mockStatic(AutoIncrement.class)){
// 여러번 호출하는 경우 willReturn을 계속 정의 하면됩니다.
given(AutoIncrement.getId())
.willReturn(3) //첫번째응답
.willReturn(4); //두번째응답

assertThat(AutoIncrement.getId()).isEqualTo(3);
assertThat(AutoIncrement.getId()).isEqualTo(4);
}
}

@Test
public void mockStaticTest_리소스직접반환() {
MockedStatic<AutoIncrement> ai = Mockito.mockStatic(AutoIncrement.class);

given(AutoIncrement.getId()).willReturn(3).willReturn(4);

assertThat(AutoIncrement.getId()).isEqualTo(3);
assertThat(AutoIncrement.getId()).isEqualTo(4);

ai.close();
}
}

Mockito.mockStatic() 함수에서 mocking하고 싶은 클래스를 파라미터로 선언을 합니다. 생성된 값을 close를 해야하기 때문에 try-with-resource를 사용하여 자동으로 자원을 반납하도록 정의했습니다.

bean을 mocking할 때와 동일하기 given함수를 사용하여 진행하면 됩니다. 이때 함수가 호출되는 순서마다 다른 응답을 원할 수 있습니다. 이 경우 순차적으로 willReturn 을 정의하면 됩니다.



지난 글 보기 

자바 JUnit Mock 테스트 https://withccm.blogspot.com/2022/09/junit-mock.html

댓글

이 블로그의 인기 게시물

Spring boot redis cache config

Spring boot redis RedisTemplate

MySQL PK 중복 (duplicate key ) 해결 방법