읽기 좋은 테스트 코드 만들기
읽기 좋은 테스트 코드는 마치 책을 읽듯이 그냥 술술 읽으면 로직이 이해되는 그런 코드이다. (물론, 영어를 기준으로 하기 때문에 비영어권 개발자로서 그닥 빠르게 이해되진 않지만-ㅅ-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@RunWith(MockitoJUnitRunner.class) public class PermissionTest { @Test public void hasPermissionWhenFriend() { when(daoProvider.get("key")).thenReturn(dao); when(dao.areFriends("id")).thenReturn(true); assertTrue(dut.hasPermission()); } @Test public void hasPermissionWhenNotFriend() { when(daoProvider.get("key")).thenReturn(dao); when(dao.areFriends("id")).thenReturn(false); assertFalse(dut.hasPermission()); } } |
위 코드를 아래 코드처럼 수정해봤다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
@RunWith(MockitoJUnitRunner.class) public class PermissionTest { private static final boolean ACCEPT = true; private static final boolean DENY = false; private static final boolean FRIEND = true; private static final boolean NOT_FRIEND = false; @Test public void hasPermissionWhenFriend() { givenFriendCondition(FRIEND); boolean permission = dut.hasPermission(); assertThat(permission, is(ACCEPT)); } @Test public void hasPermissionWhenNotFriend() { givenFriendCondition(NOT_FRIEND); boolean permission = dut.hasPermission(); assertThat(permission, is(DENY)); } private void givenFriendCondition(boolean areFriends) { when(daoProvider.get("key")).thenReturn(dao); when(dao.areFriends("id")).thenReturn(areFriends); } } |
static final 의 필드 변수를 저렇게(실제로직에는 좀더 많이)… 더 보기 »읽기 좋은 테스트 코드 만들기