2016-07-25 2 views
1

우리 앱의 단위 테스트를 작성하려고하는데 DAO 레이어 테스트에 대해 약간 혼란스러워합니다. 이 레이어는 실제의 많은 메서드를 사용합니다 SQLiteDatabase 그리고이 경우 Mockito을 사용하는 것이 적절한 방법이라고 생각하지 않습니다. 우리의 질문은 - 실제 데이터베이스로 DAO 레이어를 테스트하는 방법입니다. 안드로이드에서 실제 유닛 테스트 내부의 데이터베이스 인스턴스를 얻는 것이 진짜입니까?Android 앱 테스트 - 실제 데이터베이스로 DAO 레이어를 테스트하는 방법은 무엇인가요?

우리가 테스트 할 예 database.execSQL(..) 방법에 대한 SQL 문

  1. 실행.
  2. 실행 insert, update, delete, rawQuery 방법은 SQLiteDatabase 클래스입니다.

미리 감사드립니다.

답변

1

죄송합니다. 실제 데이터베이스로 unittest를 작성할 수 없습니다. 이것들은 정의에 의한 단위 테스트가 아닙니다.

그러나 때때로 가짜 구현을 제공하는 것이 중요 할 수 있습니다. 귀하의 경우 InMemoryDatabase. 이것은 추상 인터페이스와 realDB에서 fakeDB로 전환 할 수있는 몇 가지 방법을 정의해야하기 때문에 DB에서 코드를 약간 분리하는 데 도움이됩니다. DB 메소드의 수가 적을 경우 단검 테스트에서 Mock 해법을 시험해 볼 가치가 있습니다.

그러나 장기적으로 더 나은 방법은 디자인을 개선하는 것입니다. "Dependency Inversion Principle"과 "Onion Architecture"에 대해 읽어보십시오.

+0

또 다른 종류의 "성전"문제입니다. 나는 실제 db로 단위 테스트를 작성하지 않기로 동의합니다. 그러나 웹에서는 논쟁의 여지가 많은 기사가 있습니다. OP의 경우에는 통합 테스트를 작성하는 것이 좋습니다. –

+0

@EvgeniyK., 통합 테스트에 대한 구절에 감사드립니다. 제 생각에는, 우리는 그것을 쓸 것입니다. –

관련 문제