상태 검증
- 검증 대상
테스트 대상 객체의 상태를 검증한다.
객체의 상태는 객체의 속성 또는 반환 값 등을 포함한다.
- 주요 관점
테스트 후에 대상 시스템 또는 객체가 예상대로 변경되었는지 확인한다.
- 활용 사례
객체가 올바른 값을 반환하는지 예외가 올바르게 발생하는지 등을 검증하는 테스트에서 주로 사용된다.
@Test
public void shouldReturnCorrectSum() {
Calculator calculator = new Calculator();
int sum = calculator.add(2, 3);
assertEquals(5, sum);
}
- 장점
간단하고 직관적인 테스트 작성이 가능하다.
- 단점
내부 동작 방식이나 상호 작용에 대해 검증하지 않는다.
행위 검증
- 검증 대상
테스트 대상 객체의 행동을 검증한다.
객체의 행동은 메서드 호출, 이벤트 발생 등을 포함한다.
- 주요 관점
테스트 도중에 대상 시스템 또는 객체가 어떤 행동을 하는지 확인한다.
- 활용 사례
어떤 메서드가 어떻게 호출되는지 몇 번 호출되는지 등을 검증하는 테스트에서 주로 사용된다.
@Test
public void shouldCallDependencyMethod() {
MyDependency myDependency = mock(MyDependency.class);
MyService myService = new MyService(myDependency);
myService.performTask();
verify(myDependency).doSomething();
}
- 장점
객체 간의 상호 작용 및 내부 동작 방식에 대해 세밀한 검증이 가능하다.
- 단점
테스트 코드가 복잡해지고, 내부 구현에 의존적인 테스트가 될 가능성이 있다.