Test 사용시 @SpringBootTest Error

황상익·2024년 4월 4일
@SpringBootTest
@ExtendWith(MockitoExtension.class)
class AccountServiceImplTest {

    @Mock
    private AccountRepository accountRepository;

    @InjectMocks
    private AccountServiceImpl accountService;

    @Test
    void findAccoount(){
        given(accountRepository.findById(anyLong()))
                .willReturn(Optional.of(Account.builder()
                                .accountStatus(AccountStatus.IN_USER)
                                .accountNumber("123456789")
                        .build()));

        ArgumentCaptor<Long> captor = ArgumentCaptor.forClass(Long.class);

        Account account = accountService.getAccount(1L);

        verify(accountRepository, times(1))
                .findById(captor.capture());
        verify(accountRepository, times(0)).save(any());
        assertEquals(1L, captor.getValue());
       // assertEquals(2L, captor.getValue());
        assertEquals("123456789", account.getAccountNumber());

    }
}
  1. Spring-jcl을 사용한 표준 Commons Logging 탐지: 이 메시지는 스프링의 JCL (Java Common Logging) 지원이 활성화되어 있고 작동 중임을 나타냅니다. commons-logging.jar 를 클래스패스에서 제거하여 잠재적인 충돌을 피하도록 권장합니다. 스프링은 자체적인 로깅 패 이드를 사용하며, 클래스패스에 Apache Commons Logging과 같은 다른 로깅 프레임워크가 함 께 있는 경우 충돌이 발생할 수 있습니다. 이를 해결하려면 클래스패스에 한 가지 로깅 프레임 워크만 존재하도록 하거나, 스프링이 필요한 경우 다른 로깅 프레임워크를 사용하도록 구성할 수 있습니다.

  2. 기본 구성 클래스를 감지할 수 없음: 이 메시지는 스프링이 테스트 클래스인 AccountServiceImplTest에 대한 기본 구성 클래스를 찾을 수 없다는 것을 나타냅니다. 스프링 부트에서는 테스트가 @SpringBootTest 주석을 사용하여 애플리케이션 컨텍스트를 구성하는 경우가 많습니다. 테스트에 추가적인 구성 클래스가 필요한 경우, @SpringBootTest의 classes 속성을 사용하거나 @Configuration으로 주석을 달아서 지정할 수 있습니다.

  3. @SpringBootConfiguration byself.account.AccountApplication 발견: 이 메시지는 스프링 부트가 테스트 클래스인 AccountServiceImplTest에 대한 메인 애플리케이션 클래스 AccountApplication을 감지했다는 것을 확인합니다. 이 클래스는 일반적으로 스프링 부트 애플리케이션의 진입점으로 사용됩니다

나의 해당 사항은 2번 이었다.

profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글