문제

데이터베이스의 데이터에 따라 API를 테스트하기위한 모범 사례는 무엇입니까? 빌드 프로세스의 일부로 단위 테스트를 실행하는 "연속 통합"환경에서 조심해야 할 문제는 무엇입니까? 빌드 스크립트의 일부로 데이터베이스를 배포 하시겠습니까 (설치 프로그램을 실행할 수 있음) 또는 하드 코딩 된 데이터 [XML과 함께 MSTEST 데이터 중심 장치 테스트 사용]을 사용해야합니까?

비즈니스 로직 계층의 데이터 계층을 조롱 할 수 있다는 것을 이해하지만 DAL의 SQL 문에 문제가 있으면 어떻게해야합니까? 데이터베이스를 칠 필요가 있습니까?

글쎄 ... 그건 질문의 급류입니다 :) ... 생각?

올바른 솔루션이 없습니다

다른 팁

가능한 한 데이터베이스를 모두 치는 것을 피하기 위해 코드를 조롱해야하지만 라인을 따라 SQL을 테스트해야 할 필요성에 대해 옳은 것 같습니다. 데이터베이스에 도달하는 테스트를 작성하는 경우 두통을 피하기위한 주요 팁 중 하나는 이미 적합한 데이터를 사용하는 데 의존하지 않고 설정이 알려진 상태로 가져 오도록하는 것입니다.

물론 라이브 데이터베이스에 대해 절대 테스트하지 마십시오! 그러나 그것은 말할 것도없이 :)

언급 한 바와 같이, 조롱을 사용하여 테스트 및 데이터를 끝없이 바이올린하지 않는 한 단위 테스트에서 DB 호출을 시뮬레이션하십시오. SQL 문을 테스트하면 더 많은 것을 의미합니다 통합 테스트. 단위 테스트와는 별개의 실행은 2 개의 다른 짐승입니다.

테스트 데이터베이스를 자동으로 닦은 다음 데이터베이스에 연결 해야하는 모든 테스트에 대해 테스트 하네스 데이터로 채우는 것이 좋습니다. 적절한 격리를 위해 각 테스트 전에 데이터베이스를 재설정해야합니다. 데이터가 잘못된 데이터를 입력하는 실패 테스트는 다음 테스트에서 잘못 실패 할 수 있으며 일관된 결과를 위해 특정 순서로 테스트를 실행 해야하는 경우 지저분 해집니다.

도구로 데이터베이스를 지우고 채울 수 있습니다 (DBUNIT, dbunit.net, 다른 사람) 또는 자신만의 유틸리티 클래스를 만들어 같은 일을하십시오.

당신이 말했듯이, 다른 레이어는 실제로 데이터베이스에 도달하는 클래스와 충분히 분리되어야하므로 테스트에 관여하는 모든 종류의 데이터베이스가 코드베이스의 작은 하위 집합을 실행하는 것으로 제한됩니다. 데이터베이스 액세스 컴포넌트 액세스 구성 요소는 구성 요소에 의존하는 모든 것에 대해 조롱/스튜브를 할 수 있습니다.

내가 한 한 가지는 알려진 상태의 테스트 데이터를 반환하는 정적 메소드를 만드는 것입니다. 그런 다음 "가짜"DAL을 사용하여 실제로 데이터베이스를 호출하는 것처럼이 데이터를 반환합니다. SQL/저장 프로 시저를 테스트하면 SQL Management Studio를 사용하여 테스트했습니다. ymmv!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top