개발 공부

커뮤니티 피드(3) - 테스트 작성

ljs981026 2025. 2. 13. 18:04

1. UserInfoTest

// org.communityfeed.user.domain
// UserInfoTest.java
class UserInfoTest {
    @Test
    void givenNameAndProfileImageUrl_whenCreated_thenThrowNothing() {
    	// given
        String name = "test";
        String profileImage = "profileImage";
        
        // when
        // then
        assertDoesNotThrow(() -> new UserInfo(name, profileImage));
    }
    
    @Test
    void givenBlankNameAndProfileImageUrl_whenCreated_thenThrowError() {
    	// given
        String name = "";
        String profileImage = "profileImage";
        
        // when
        // then
        assertThrows(IllegalArgumentException.class, () -> new UserInfo(name, profileImage));
    }
}

 

테스트 목록

  • givenNameAndProfileImageUrl_whenCreated_thenThrowNothing
    이름과 프로필이미지 url이 주어졌을 때 예외 발생 여부 테스트 => 예외 미발생 시 통과
  • givenBlankNameAndProfileImageUrl_whenCreated_thenThrowError
    이름이 주어지지 않았을 때 예외 발생 여부 테스트 => 예외 발생 시 통과

 

2. PositiveLikeCountTest

// org.communityfeed.common
// PositiveLikeCountTest.java
class PositiveLikeCountTest {
	@Test
    void givenCreated_whenIncrease_thenCountIsOne() {
    	// given
        PositiveLikeCounter positiveLikeCount = new PositiveLikeCounter();
        
        // when
        positiveLikeCount.increase();
        
        // then
        assertEquals(1, positiveLikeCount.getCount());
    }
    
    @Test
    void givenCreatedAndIncrease_whenDecrease_thenCountIsZero() {
    	// given
        PositiveLikeCount positiveLikeCount = new PositiveLikeCount();
        positiveLikeCount.increase();
        
        // when
        positiveLikeCount.decrease();
        
        // then
        assertEquals(0, positiveLikeCount.getCount());
    }
    
    @Test
    void givenCreated_whenDecrease_thenCountIsZero() {
    	// given
        PositiveLikeCount positiveLikeCount = new PositiveLikeCount();
        
        // when
        positiveLikeCount.decrease();
        
        // then
        assertEquals(0, positiveLikeCount.getCount());
    }
}

 

테스트 목록

  • givenCreated_whenIncrease_thenCountIsOne
    값이 증가했을 때 결과 값이 비교 값과 동일 여부 테스트 => 동일시 통과
  • givenCreatedAndIncrease_whenDecrease_thenCountIsZero
    값이 증가한 상태에서 감소했을 때 비교 값과 동일 여부 테스트 => 동일시 통과
  • givenCreated_whenDecrease_thenCountIsZero
    초기값에서 감소했을 때 비교 값과 동일 여부 테스트 => 동일시 통과

 

3. UserTest

// org.communityfeed.user.domain
// UserTest.java
class UserTest {
	UserInfo userInfo = new UserInfo("test", "profileImage");
    User user1;
    User user2;
    
    // 초기값
    @BeforeEach
    void init() {
    	user1 = new User(1L, userInfo);
        user2 = new User(2L, userInfo);
    }
    
    @Test
    void givenTwoUsers_whenEqual_thenReturnFalse() {
    	// when
        boolean isSame = user1.equals(user2);
        
        // then
        assertFalse(isSame);
    }
    
    @Test
    void givenTwoSameIdUsers_whenEqual_thenReturnTrue() {
    	// given
        User sameUser = new User(1L, userInfo);
        
        // when
        boolean isSame = user1.equals(sameUser);
        
        // then
        assertTrue(isSame);
    }
    
    @Test
    void givenTwoUsers_whenHashCode_thenNotEqual() {
    	// when
        int hashCode1 = user1.hashCode();
        int hashCode2 = user2.hashCode();
        
        // then
        assertNotEquals(hashCode1, hashCode2)
    }
    
    @Test
    void givenTwoSameIdUsers_whenHashCode_thenEqual() {
    	// given
        User sameUser = new User(1L, userInfo);
        
        // when
        int hashCode1 = sameUser.hashCode();
        int hashCode2 = user1.hashCode();
        
        // then
        assertEquals(hashCode1, hashCode2);
    }
    
    @Test
    void givenTwoUsers_whenUser1FollowUser2_thenIncreaseUserCount() {
    	// when
        user1.follow(user2);
        
        // then
        assertEquals(1, user1.getUserFollowing());
        assertEquals(0, user1.getUserFollower());
        assertEquals(0, user2.getUserFollowing());
        assertEquals(1, user2.getUserFollower());
    }
    
    @Test
    void givenUser1FollowUser2_whenUser1UnfollowUser2_thenDecreaseUserCount() {
    	// given
        user1.follow(user2);
        
        // when
        user1.unfollow(user2);
        
        // then
        assertEquals(0, user1.getUserFollowing());
        assertEquals(0, user1.getUserFollower());
        assertEquals(0, user2.getUserFollowing());
        assertEquals(0, user2.getUserFollower());
    }
    
    @Test
    void givenTwoUsers_whenUser1UnfollowUser2_thenNotDecreaseUserCount() {
    	// when
        user1.unfollow(user2);
        
        // then
        assertEquals(0, user1.getUserFollowing());
        assertEquals(0, user1.getUserFollower());
        assertEquals(0, user2.getUserFollowing());
        assertEquals(0, user2.getUserFollower());                
    }
}

 

테스트 목록

  • givenTwoUsers_whenEqual_thenReturnFalse
    서로 다른 두 사용자가 동일한 사용자인지 테스트 => 불일치 시 통과
  • givenTwoSameIdUsers_whenEqual_thenReturnTrue
    두 사용자의 아이디가 일치하는지 테스트 => 일치시 통과
  • givenTwoUsers_whenHashCode_thenNotEqual
    서로 다른 두 사용자의 해시 코드가 일치하는지 테스트 =>  불일치 시  통과
  • givenTwoSameIdUsers_whenHashCode_thenEqual
    두 사용자의 해시 코드가 일치하는지 테스트 => 일치시 통과
  • givenTwoUsers_whenUser1 FollowUser2_thenIncreaseUserCount
    사용자 1이 사용자 2를 팔로우했을 때 결과 값 일치 테스트 => 일치 시 통과
  • givenUser1 FollowUser2_whenUser1 UnfollowUser2_thenDecreaseUserCount
    사용자 1이 사용자 2를 팔로우한 상태에서 언팔로우했을 때 결과 값 일치 테스트 => 일치 시 통과
  • givenTwoUsers_whenUser1 UnfollowUser2_thenNotDecreaseUserCount
    초기 상태에서 사용자 1이 사용자 2를 언팔로우했을 때 결과 값 일치 테스트 => 일치 시 통과