🧪 Spring Boot 테스트 코드 예제 – 새롭게 구성한 실습용 예시
📌 도메인 구조: Article
📁 Article.java
package com.example.demo.domain;
import jakarta.persistence.*;
import lombok.*;
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
public void update(String title, String content) {
this.title = title;
this.content = content;
}
}
📁 DTO 클래스
📁 ArticleCreateRequest.java
package com.example.demo.dto;
import lombok.*;
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ArticleCreateRequest {
private String title;
private String content;
}
📁 ArticleResponse.java
package com.example.demo.dto;
import lombok.*;
@Getter
@AllArgsConstructor
@Builder
public class ArticleResponse {
private Long id;
private String title;
private String content;
}
📁 Repository
📁 ArticleRepository.java
package com.example.demo.repository;
import com.example.demo.domain.Article;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ArticleRepository extends JpaRepository<Article, Long> {
}
📁 Service
📁 ArticleService.java
package com.example.demo.service;
import com.example.demo.domain.Article;
import com.example.demo.dto.ArticleCreateRequest;
import com.example.demo.dto.ArticleResponse;
import com.example.demo.repository.ArticleRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class ArticleService {
private final ArticleRepository repository;
public ArticleResponse create(ArticleCreateRequest request) {
Article saved = repository.save(new Article(null, request.getTitle(), request.getContent()));
return toResponse(saved);
}
public ArticleResponse get(Long id) {
Article article = repository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("게시글이 없습니다."));
return toResponse(article);
}
private ArticleResponse toResponse(Article article) {
return ArticleResponse.builder()
.id(article.getId())
.title(article.getTitle())
.content(article.getContent())
.build();
}
}
✅ 단위 테스트 예제 (ArticleServiceTest.java)