HibernateUtility.getSession()
과 같은 정적 메서드 호출을 포함하는 테스트 코드를 단위 화하는 것은 어렵습니다. 당신은 세션 인스턴스를 주입하는 것이 좋습니다
합니다 (createUser()
메서드에 대한 매개 변수를 추가하여 아마도, 또는이 방법은 Session
인스턴스를 취득하는 데 사용할 수있는 Session Factory
객체를 포함하는 객체를 제공함으로써). 그런 다음 Mockito 또는 이와 유사한 프레임 워크를 사용하여 메소드 Session
객체를 제공하고 예상되는 호출이 수행되는지 확인합니다. Mockito를 사용
public String createUser(Session session) {
Transaction tx = session.beginTransaction();
session.save(this);
tx.commit();
session.close();
return "accountCreated";
}
, 단위 테스트는 다음과 같습니다
public testCreateUser(){
Session session = mock(Session.class);
Transaction trans = mock(Transaction.class);
when(session.beginTransaction()).thenReturn(trans);
obj.createUser(session);
verify(session).save(obj);
verify(session).close();
verify(trans).commit();
}
을 당신이 정확하게 테스트 할 수 있습니까? 라이브러리 메소드가 작동하는지 여부는 테스트 포인트가 아닙니다 ... createUser() 메소드의 동작을 테스트하려면 메소드를 사용하여 사용자를 생성하십시오. 사용자를 검색하고 테스트가 완료된 후 삭제하십시오. – hovanessyan