//////
Search
📓

10/20 회고록

생성일
2022/10/20 07:04
태그

김기헌

Query execute in Java

deleteAll (MySQL: DELETE FROM USERS);
public void deleteAll() throws SQLException { Connection c = connectionMaker.connectionMaker(); PreparedStatement ps = c.prepareStatement("delete from users"); ps.executeUpdate(); ps.close(); c.close(); }
Java
복사
getCount (MySQL: SELECT COUNT(*) FROM users)
public int getCount() throws SQLException { Connection c = connectionMaker.connectionMaker(); PreparedStatement ps = c.prepareStatement("select count(*) from users"); ResultSet rs = ps.executeQuery(); rs.next(); int count = rs.getInt(1); rs.close(); ps.close(); c.close(); return count; }
Java
복사

Test (JUnit5)

@BeforeEach: 본 어노테이션을 붙인 메서드는 테스트 메서드 실행 이전에 수행된다.
//예시 @BeforeEach void beforeEach() { System.out.println("@BeforeEach"); }
Java
복사
//기존 코드 @Test void addAndSelect() throws SQLException { UserDao userDao = context.getBean("awsUserDao",UserDao.class); String id = "40"; User user = new User(id, "spring", "1123"); userDao.add(user); User selectedUser = userDao.findById(id); Assertions.assertEquals("spring", selectedUser.getName()); Assertions.assertEquals("1123", selectedUser.getPassword()); }
Java
복사
//@BeforeEach를 사용하여 Test마다 선언해주는 부분의 반복성을 줄임 //@Autowired를 이용해서 Container에서 가져오게 하여 new를 한번만 하도록 함 class UserDaoTest { @Autowired ApplicationContext context; User user1,user2,user3; UserDao userDao; @BeforeEach void SetUp(){ this.userDao = context.getBean("awsUserDao",UserDao.class); } @Test void addAndSelect() throws SQLException { String id = "11112"; User user = new User(id, "spring", "1123"); userDao.add(user); User selectedUser = userDao.findById(id); Assertions.assertEquals(user.getName(), selectedUser.getName()); Assertions.assertEquals(user.getPassword(), selectedUser.getPassword()); userDao.deleteAll(); Assertions.assertEquals(0,userDao.getCount()); } }
Java
복사

이가현

알고리즘

stack

Last in first out
pop() : 마지막에 추가된 자료를 반환하며 제거하는 메서드
public int pop(){ if(this.top==0){ throw new EmptyStackException(); //0으로 시작하면 인덱스 -1의 예외 발생 } this.top --; return this.arr[this.top]; }
Java
복사
isEmpty() : 스택이 비어있으면 true, 비어있지 않으면 false를 반환하는 메서드
public boolean isEmpty() { boolean isEmpty = this.top == 0; //this.top == 0 의 연산 결과에 따라 isEmpty에 true 또는 false가 대입된다. return isEmpty; }.
Java
복사
@Test void isEmpty(){ Stack01 st = new Stack01(); assertTrue(st.isEmpty()); st.push(10); assertFalse(st.isEmpty()); st.pop(); assertTrue(st.isEmpty()); }
Java
복사
peek() : 스택에서 가장 마지막에 추가된 자료를 제거하지 않고 반환하는 메서드
void peek(){ Stack01 st = new Stack01(); assertThrows(EmptyStackException.class,()->{ st.peek(); }); st.push(10); int peeked = st.peek(); assertEquals(10,peeked); }
Java
복사

토비의 Spring

deleteAll() 추가
getCount() 추가
deleteAll(), getCount() test만들기
findById() 예외처리
@beforeEach
try-catch문을 통한 예외처리

임학준

deleteAll()

테스트 코드에서 사용시 DB에 추가시 중복되는 상황(Duplicate error)을 방지해준다
public void deleteAll() throws SQLException { Connection c = connectionMaker.makeConnection(); PreparedStatement ps= c.prepareStatement("delete from users"); ps.executeUpdate(); ps.close(); c.close(); }
Java
복사

getCount()

public int getCount() throws SQLException { Connection c = connectionMaker.makeConnection(); PreparedStatement ps = c.prepareStatement("SELECT count(*)from users"); ResultSet rs = ps.executeQuery(); rs.next(); int count = rs.getInt(1); rs.close(); ps.close(); c.close(); return count; }
Java
복사

테스트 주도 개발

테스트를 먼저 만들고 테스트를 성공하게 하는 코드를 개발
테스트 주도 개발을 원칙으로 할시 완성된 코드는 모든 테스트를 통과 한 것이 된다
@Test void userNull() { assertThrows(EmptyResultDataAccessException.class, ()->{ userDao.deleteAll(); userDao.findById("0");} //User가 Null일 경우 예외상황을 테스트한다 //findById 메소드의 rs.next에서 SQLException이 먼저 일어나게되고 테스트는 실패패한다
Java
복사
ResultSet rs = pstmt.executeQuery(); //UserDao의 findById 메소드 User user = null;//수정 if (rs.next()) { user = new User(rs.getString("id"), rs.getString("name"), rs.getString("password")); } rs.close(); pstmt.close(); c.close(); if (user == null) throw new EmptyResultDataAccessException(1);//수정 return user; //결과가 없을때 null값을 넣어 EmptyResultDataAccessException이 발생하도록했다 //예외 상황을 테스트하기위해 @Test를 먼저 작성후 UserDao의 메소드를 수정했다
Java
복사

@BeforeEach

Alt + Insert로 자동생성시 void setup()메소드가 함께 생성된다
@Test붙은 메소드를 실행하기전에 실행된다
@Test코드의 중복 코드를 넣어 사용할수있다
@BeforeEach void setUp() { this.userDao = context.getBean("localUserDao",UserDao.class); this.user1 = new User("1", "hakjun", "1234");}//각 @Test마다 중복되는 코드를 정리
Java
복사

최아영

Stack 구현

isEmpty(), peek() 추가
isEmpty(), peek() 테스트 추가

토비의 스프링 2장

deletAll()
getCount()
Test Refactoring

토비의 스프링 3장

Exception처리