

xml 작성

개념 그림







테스트 실행할때 왼쪽의 체크표시 있는부분 누르고
정상실행시 = 초록색
터질시 = 빨강색과 코드폭탄

목록과 1개 찾기 테스트 성공장면.

MyBatis는 ResultSet을 자바 Entity로 변경해줄때 빈생성자만 호출하고 setter가 없어도 값을 매핑해준다.


마이바티스는 너무 거대해서 라이브라리라기 보다 프레임 워크라고 봄
프로덕트라는 엔티티를 new 해서 메모리에 띄어야하는데
의도를 명확하게 하려는
이걸 만들어서 디폴트가 사라졌으니까 Test와서 테스트 바로 가능
위에서 실행해보면 터짐. 빈 생성자가 없어서 그럼.
- 빈생성자가 있으니까 Test 를 해도 안 터짐.
- private로 바꾸면 ?
- Test 가서 시도하면 성공함.
- 확장자 추가
@Import(MyBatisConfig.class) // MyBatisTest가 MyBatisConfig를 못읽음
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) // 실DB사용
@MybatisTest
public class ProductDaoTest {
@Autowired
private ProductDao productDao;
@Test
public void findById_test() {
// given - ( 컨트롤러에서 받아야 될 것)
Integer productId = 1;
// when - ( 테스트 )
Product productPS = productDao.findById(productId);
// then - ( 검증 )
assertEquals("바나나", productPS.getProductName());
}
@Test
public void findAll_test() {
// given
// when PS = 영속화 되어있는 데이터를 뜻함
List<Product> productListPS = productDao.findAll();
// then
assertEquals(2, productListPS.size());
}
// MyBatis는 REsultSet을 자바 Entity로 변경해줄때 빈생성자만 호출하고 setter가 없어도 값을 매핑해준다.
@Test
public void insert_test() {
// given
String productname = "수박";
Integer productPrice = 1000;
Integer productQty = 100;
Product product = new Product(productname, productPrice, productQty);
// when
int result = productDao.insert(product);
// then
assertEquals(1, result);
} // rollback
@Test
public void update_test() {
// given
Integer productId = 1;
String productName = "수박";
Integer productPrice = 1000;
Integer productQty = 100;
Product product = new Product(productName, productPrice, productQty);
product.setProductId(productId);
// verify
Product productPS = productDao.findById(product.getProductId());
assertTrue(productPS == null ? false : true);
// when
// product[id=1, productName="수박", productPrice=1000, productQty=100]
// productPS [id=1, productName="바나나", productProce= 3000, productQty=98,
// createdAt=2022-09-29]
productPS.update(product);
// productPS [id=1, productName="tnqkr", productProce= 1000, productQty=100,
// createdAt=2022-09-29]
int result = productDao.update(productPS);
// then
assertEquals(1, result);
}
@Test
public void deleteById_test() {
// given
Integer productId = 1;
// verify
Product productPS = productDao.findById(productId);
assertTrue(productPS == null ? false : true);
// when
int result = productDao.deleteById(productId);
// then
assertEquals(1, result);
}
}
