1. [해당프로젝트]->[src]->[test]->[java]->[패키지 하위]->[test할 Repository 생성]
2. [test할 Repository]클래스에다가 extends [프로젝트명]ApplicationTests를 상속
ex-)현재 [프로젝트 명]은 [study]로 되어있어서 [StudyApplicationTests]
3. 테스트 코드를 실행할 메서드에 @Test 어노테이션를 꼭 붙여서 실행
4. @Transactional 어노테이션을 사용시에 데이터를 롤백 할 수 있는 기능이 있다.
데이터를 수시로 삭제되거나 수정되는 경우를 방지함으로 용이하다.
- 아래는 테스트 코드 작성예시(JPA사용)
package com.example.study.repository;
import com.example.study.StudyApplicationTests;
import com.example.study.model.entity.User;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import javax.transaction.Transactional;
import java.time.LocalDateTime;
import java.util.Optional;
//test 코드 상속
public class UserRepositoryTest extends StudyApplicationTests {
@Autowired
private UserRepository userRepository;
//@Autowired을 사용함으로써 아래의 코드를 줄일 수 있다.( DI: 의존성주입 )
//자동으로 객체를 관리
//private UserRepository userRepository =new UserRepository();
//테스트코드 작성시 꼭 작성
@Test
public void create(){
//String sql = insert into user(%s,%s,%s)value(account,email,age);
//객체를 통한 데이터베이스를 관리
User user = new User();
user.setAccount("TestUser07");
user.setEmail("TestUser07@gmail.com");
user.setPhoneNumber("010-3333-1000");
user.setCreatedAt(LocalDateTime.now());
user.setCreatedBy("admin");
User newUser = userRepository.save(user);
System.out.println("newUser: " + newUser);
}
public void Test(){}
@Test
public void read(){
Optional<User> user = userRepository.findById(2L);
user.ifPresent(selectUser->{
System.out.println("User:"+selectUser);
System.out.println("email:"+ selectUser.getEmail());
});
}
@Test
@Transactional //롤백
public void update(){
Optional<User> user = userRepository.findById(2L);
user.ifPresent(selectUSer->{
selectUSer.setAccount("ppp");
selectUSer.setUpdatedAt(LocalDateTime.now());
selectUSer.setUpdatedBy("update method()");
userRepository.save(selectUSer);
});
}
// @DeleteMapping("/api/user")
// public void delete(@RequestParam Long id){
@Test
@Transactional //데이터베이스의 데이터를 유지 시켜준다 롤백 계속해서 삭제가 되면 안되므로
public void delete(){
Optional<User> user = userRepository.findById(3L);
//1L의 값을 있는지 존재여부 확인
Assert.assertTrue(user.isPresent()); //true
user.ifPresent(selectUSer->{
userRepository.delete(selectUSer);
});
Optional<User> deleteuser = userRepository.findById(3L);
//@TEST 코드를 위해 작성
// if(deleteuser.isPresent()){
// System.out.println("데이터존재"+deleteuser.get());
// }else{
// System.out.println("데이터 삭제 데이터가 없음");
// }
Assert.assertFalse(deleteuser.isPresent());//반드시 false여야한다.
}
}
반응형
'Spring' 카테고리의 다른 글
Springboot 프로젝트 생성방법 ( Intellij ) (0) | 2019.11.09 |
---|---|
JPA Enum 형태 관리방법-회원관리 (0) | 2019.11.08 |
Repository (0) | 2019.11.06 |
Entity 엔티티 (0) | 2019.11.05 |
Naming Convention(네이밍컨벤션) (0) | 2019.11.04 |