<Spring & JPA 웹서비스 만들기 > 구현 (2) - 서비스's
by BFine반응형
가. 추첨 서비스
a. 테스트 작성 - 랜덤으로 추첨하기
- 화면단에서 추첨할 이름 리스트, 금액, 추첨인원수를 넘겨준다 가정하고 랜덤으로 사람을 뽑아보자
public class DrawServiceUnitTest {
private static final int FIRST = 0;
@Test
public void 유저추첨하기(){
List<String> nameList = new ArrayList<>();
int people = 1;
nameList.add("김철수");
nameList.add("김나영");
nameList.add("김영희");
nameList.add("황호준");
List<Integer> numberList = new ArrayList<>();
int count = 0;
while (count != people) {
int number = new Random().nextInt(nameList.size());
if(count != FIRST){
if(numberList.contains(number)){
continue;
}
}
numberList.add(number);
count++;
}
List<String> pickList = numberList.stream()
.map(number->nameList.get(number))
.collect(Collectors.toList());
pickList.stream().forEach(System.out::println);
assertEquals(people, pickList.size());
}
}
- 이부분은 Spring이나 DB 관련부분(Bean, JPA 등)이 없기 때문에 @SpringBootTest가 필요가 없다
- 이렇게 하는것보다 더 좋은 방법이 있을 것 같긴한데 이부분은 어떻게 하면 더 좋을지는
나중에 찾아보면서 비교해봐야겠다..
나. 유저 서비스
a. 테스트 작성 - 결과업데이트하기
@SpringBootTest
public class UserServiceTest {
private static final int FAIL = 0;
@Autowired
UserRepository userRepository;
@Autowired
RedisTemplate<String,Object> redisTemplate;
@Test
public void 결과업데이트하기() {
int bet = 15000;
String title = "점심값";
DrawRequestDTO drawRequestDTO = DrawRequestDTO.builder()
.name(Arrays.asList("김철수","김영희"))
.bet(bet)
.title(title)
.build();
List<String> pickNameList = Arrays.asList("김철수");
int result = userRepository.updateAmount(pickNameList, drawRequestDTO);
assertNotEquals(FAIL, result);
}
다. 고민
a. TDD를 어떻게 해야 맞는걸까?
- 조금 만들어보면서 고민이 되는 부분을 정리해봐야겠다.
1. 테스트 코드의 범위
=> 요게 제일 어려운것 같다. DB를 포함하지 않는 순수 Java만 있는 것을 단위테스트로 하려고 했는데
물론 지금하는게 간단한거라 그렇기 하지만 DB와 상호작용 없이 테스트하는 의미가 있을까?
2. 빈번한 수정 발생
=> 테스트코드 작성 -> 실제 코드작성 -> 살짝 달라짐 -> 테스트코드를 수정(?)
사실 테스트 코드를 수정해야하는데 아무래도 차이가 있는 부분들이 있다보니 결국 후에 테스트코드를
수정하게 되는데 이부분은 많이 해봐야 알것같다.
반응형
'공부 > JPA' 카테고리의 다른 글
<Spring & JPA 웹서비스 만들기 > 구현 (4) - 화면 구성 (0) | 2021.02.06 |
---|---|
<Spring & JPA 웹서비스 만들기 > 구현 (3) - Redis 자동완성 (0) | 2021.01.31 |
<Spring & JPA 웹서비스 만들기 > 구현 (1) - 엔티티's (0) | 2021.01.21 |
<Spring & JPA 웹서비스 만들기 > 설계 (2) - DB & TDD (0) | 2021.01.15 |
<Spring & JPA 웹서비스 만들기 > 설계 (1) (0) | 2021.01.14 |
블로그의 정보
57개월 BackEnd
BFine