개발 공부
커뮤니티 피드(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를 언팔로우했을 때 결과 값 일치 테스트 => 일치 시 통과