최근에 특정 시간 형식을 사용하여 현재 시간을 반환하는 getter 함수가 하나 있습니다. 그것은 일부 시스템 API를 사용하여 현재 시간을 반환하기 때문에 이에 대한 단위 테스트를 작성하는 방법을 생각할 수 없습니다.'getCurrentTime()'함수의 단위 테스트 작성 방법은 무엇입니까?
누구든지 제안 할 수 있습니까?
최근에 특정 시간 형식을 사용하여 현재 시간을 반환하는 getter 함수가 하나 있습니다. 그것은 일부 시스템 API를 사용하여 현재 시간을 반환하기 때문에 이에 대한 단위 테스트를 작성하는 방법을 생각할 수 없습니다.'getCurrentTime()'함수의 단위 테스트 작성 방법은 무엇입니까?
누구든지 제안 할 수 있습니까?
테스트중인 시스템에서 시스템 API를 분리해야합니다.
이 작업을 수행하는 알려진 방법은 종속성 삽입을 사용하는 것입니다. 현재 시간을 검색하는 클래스를 시간 포맷터에 삽입합니다.
단위 테스트에서 TimeFormatter의 결과를 확인할 수 있도록 미리 정의 된 값을 반환하는 Fake CurrentTime API를 삽입합니다. 프로덕션 환경에서 실행 중이면 System API를 사용합니다.
이상적인 솔루션은 시스템 시간을 직접 사용하지 않고 대신 모든 코드에서 System (Java라고 가정) 주위에 래퍼 (wrapper)를 사용하여 조롱 할 수 있도록하는 것입니다. 이것은 실현 가능하지 않거나 쉽지 않을 수 있습니다.
보다 간단한 방법은 형식 지정을 수행하는 두 번째 방법을 만드는 것입니다.이 방법은 시간을 매개 변수로 사용합니다. 그런 다음 서식을 쉽고 철저하게 테스트 할 수 있습니다.
그런 다음 원래 방법으로 시스템 시간 (예 : System.currentTimeMillis()
)에 전달하는 새 메소드를 호출하고 이에 대한 테스트를 작성하지 않아도됩니다. 이 시점에서 아무 것도 할 수 없으므로 아무 것도 테스트 할 것이 없습니다.
정확히 테스트 하시겠습니까? 올바른 시간을 반환하는지 테스트하려고합니까? 아니면 시간이 올바른 형식으로 반환됩니까? –
Daniel, 네, 정확한 시간에 적절한 형식인지 테스트하고 싶습니다. – zyzyis