2017-12-24 6 views
0

단위 테스트를 처음 사용합니다. CRUD 응용 프로그램을 테스트하는 단위의 전체 예제/샘플을 찾지 못했습니다.C# 단위 테스트 n 계층 mvc 응용 프로그램

엔티티 프레임 워크를 사용하는 MVC 응용 프로그램에서 단위 테스트를 추가하고 싶습니다.

테스트를 실행할 때마다 데이터베이스에 실제로 데이터를 추가합니까? 모든 프로젝트에 대해 단위 테스트 프로젝트를 별도로 생성합니까?

+3

단위 테스트에서 앱의 작은 부분을 확인합니다. 데이터 액세스 코드를 단위 테스트하지 마십시오. 대신 당신은 그것을 조롱 (저장/실제 DB 대신 메모리에서 데이터를 읽습니다). 엔드 투 엔드 테스트 (실제 데이터베이스 포함)를 수행하는 통합 테스트를 생성 할 수 있습니다. – Shyju

답변

1
  • 단위 테스트는 빠른
  • 단위 테스트는
  • 단위 테스트는 단위 테스트에서 데이터베이스를 사용하여 다른 테스트

의 분리에 실행해야 다른 응용 프로그램의 단위 단독으로 실행해야해야합니다 것입니다

  • 액세스 데이터베이스 위의 "원칙"을 위반하는 것은 느린
  • 데이터베이스는 응용 프로그램의 "전역 상태"를 나타냅니다. 따라서 동일한 데이터베이스를 사용하면 모든 테스트에 대해 데이터베이스를 설정하고 지우고 테스트를 병렬로 실행할 가능성이 없어집니다.

단위 테스트의 경우 테스트를 느리게하거나 글로벌 상태에 의존하는 모든 추상 테스트가 필요합니다.
귀하의 경우에는 데이터베이스 작업 만 추상화하고 테스트에서 조롱하는 것으로 충분할 것입니다.
Entity Framework Core는 데이터베이스 작업을 테스트하는 빠른 단위 테스트를 작성할 수있는 nice In-Memory Database Provider을 제공합니다.

모의 데이터베이스를 사용하여 테스트를 작성하려면 모의 객체를 구성하여 테스트에 필요한 데이터를 반환하거나 주장해야합니다.
InMemory 데이터베이스 공급자를 사용하는 경우 테스트를 위해 데이터를 삽입하거나 예상 결과를 표시하기 위해 데이터베이스를 읽어야합니다.

모든 "테스트 된"프로젝트에 대해 자체 테스트 프로젝트를 수행하는 것은 일반적인 관행이지만 솔루션 구조를 직접 개발하여 필요와 기대에 부합되게 만듭니다. 당신이 신속하게 일부 동작이나 구체적인 방법에 대한 특파원 테스트를 찾을 수있는 주요 아이디어.

관련 문제