주문한 책이 안온다...
tdd를 여기저기 봐도...
이 상황에 적합한 최적화를 모르겠다.
a to z를 다 하기 보다
그냥 맨땅에 해딩일단 조금 해보려고 한다.
https://iamipro.tistory.com/461
데이터 모델링( 비즈니스 로직 tdd로 가기전)
설계라는것은 엄청난 것이라는 생각이 든다. 왜냐하면 창조적인 본능과 연계된 것으로 지구에서 눈에 보이는 것중에 인간만이 할 수 있기 때문이다. 여태까지는 도구를 쓴 부분만 생각했는데
iamipro.tistory.com
앞서 한 데이터 모델링을 기반으로
수강기능을 tdd로 해보려고 한다.
리포지토리 테스트는 끝났다~!
JPA참 편하다ㅎㅎ~
일단 tdd에서는 mock을 쓴다.
mock은 tdd의 단위테스트의 독립성을 보장해주기 위해서 한다고 한다.
https://cornswrold.tistory.com/369
Mockito 어노테이션(@Mock, @InjectMocks)
Mockito 관련 어노테이션 @RunWith(MockitoJunitRunner.class) Mockito에서 제공하는 목객체를 사용하기 하기위해 위와같은 어노테이션을 테스트클래스에 달아준다. @RunWith(MockitoJunitRunner.class) public class Test(){
cornswrold.tistory.com
@InjectMocks 는 @Mock 이붙은 객체를 @InjectMocks이 붙은 객체에 주입할수 있다고 한다.
즉 아래코드로 보면 EnrollmentService 에 CourseService를 주입한 것이다.
수강등록( EnrollmentService )이라는 서비스에 앞서 수강서비스(CourseService)를 주입해서 사용하는 것이다.
import me.lms.tddstart.model.Course;
import me.lms.tddstart.model.dto.CourseDto;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class EnrollmentServiceTest {
@Mock
private CourseService courseService;
@InjectMocks
private EnrollmentService enrollmentService;
@Test
@DisplayName("수강신청 테스트")
void enroll() {
when(courseService.getCourseByCode(1)).thenReturn(new Course(1, "강의1" ,1));
CourseDto result = enrollmentService.enroll(1, 1);
assertNotNull(result);
assertEquals(1, result.getCourseCode());
assertEquals("강의1", result.getCourseName());
}
}
그리고 등록테스트는 간단하게
CourseService 에서 과목 하나를 가져오면서 과목객체를 생성한다.
CourseDto객체를 만들어서 수강신청 서비스에 등록한다
이로서 간단한 수강신청 등록 tdd 완성이다.
좀더 공부할 거리를 생각해보자~!
아래 보니 모키토를 좀더 상세히 설명해주즌 사이트가 있다.
https://doyoung.tistory.com/12
Junit5 에서 Mockito 사용하기
아래의 글을 작성하면서 Mockito 에 대해서 궁금해져서 공부를 해보았다. Junit5 시작 What is JUnit 5? JUnit 5 Société Générale Use, Contribute and Attract: learn about Société Générale's open source strategy. junit.org j
doyoung.tistory.com
tdd는 처음에 실패하는 케이스를 생각해보고...
실패하지 않게끔 하는게 리팩토링하는게 궁극의 목적이라고 알고 있다...
일단 그렇다면 기본적인 등록까지는
데이터 모델링을 제대로 했기에 제대로 되는거고...
그 다음은... dto 객체를 생성하면서
좀더 복잡한 tdd... 동시성 테스트... 같은것을 해보자~!
'4차산업혁명의 일꾼 > 웹개발' 카테고리의 다른 글
항해 플러스 백엔드 3기 솔직 후기(Java는 1기편) (70) | 2024.02.17 |
---|---|
개발바닥에 등장한 토비님을 보며 추억한 MVC (2) | 2024.02.13 |
제이쿼리 기초 복습과 데이터의 호출에서 관리로 (6) | 2024.02.10 |
데이터 모델링( 비즈니스 로직 tdd로 가기전) (2) | 2024.02.10 |
인텔리제이 생산성 연구 (5) | 2024.02.08 |