단위 테스트가 처음입니다. 그러나 Entity Framework로 작성된 DAL을 어떻게 테스트 할 수 있습니까? 그렇다면 DAL 코드가 올바르게 작동하는지 확인할 수는 있지만 실제로 데이터베이스에 영향을주지는 않습니까? 누군가가 가능한 한 자세하게 설명해 주실 수 있습니까?내 DAL을 정확하게 단위 테스트하는 방법은 무엇입니까?
답변
데이터 액세스 레이어가 올바로 작동하는지 테스트하려는 경우 실제로 테스트하지 않은 경우 데이터베이스에서 특정 지점을 테스트해야합니다.
단위 테스트를 할 때 단위 테스트가 끝날 때 트랜잭션과 롤백을 사용하므로 db가 깨끗합니다.
흥미 롭다. 결코 그것에 대해 생각해 본적이 없다. 구글을 할 수는 있지만, 어떻게 할 수 있는지에 대한 코드 스 니펫을 가지고 있는가? –
이것은 단위 테스트가 아니지만 통합 테스트입니다. 괜찮습니다. 많은 프레임 워크는 통합 테스트가 각각의 테스트마다 자동 트랜잭션을 사용하여 별도의 테스트 데이터베이스를 가리키고 있습니다. –
NUnit이 자동 트랜스 테스트를 수행합니까? 그렇다면 어떻게 설정해야합니까? –
DAL 단위 테스트는 개발 과정에서 매우 일반적인 두통입니다. 대부분은 건너 뛰는 것이 좋습니다.
요즘 대부분의 ORM은 일종의 쿼리 언어 LINQ 또는 HQL 또는 다른 맛을 제공합니다. 적절한 단위 테스트를 수행하려면 데이터베이스에 실제로 도달하지 않아야하므로 ORM을 조롱하고 그렇게하면 생각할 수있는 가장 큰 고통이됩니다. 그만한 가치는 없습니다, IMO. 궁극적으로, 당신은 당신이 당신의 코드에 적절한 쿼리를 작성했다는 것을 테스트 할뿐입니다; 회귀 값을 전혀 얻지 못하고 코드를 검사하여 목적을보다 잘 수행 할 수 있습니다.
그러나 DAL 사용을 테스트해서는 안된다고 말하는 것은 아닙니다. 단위 테스트를 시도하지 마십시오. 당신은 여전히 당신의 프로그램/시스템에 대한 통합 및 사용자 수용 테스트 스위트를 가지고 있어야합니다; 대신 데이터 액세스 테스트를 처리하도록합니다.
+1 그리고 테스트 데이터베이스가 존재하지 않는다면 정말로 (OP가 데이터 업데이트에 관심이있는 것처럼 보입니다.) –
조롱의 역할은 무엇입니까? 누군가 테스트 데이터베이스의 역할 대 그 사용법을 설명 할 수 있습니까? –
테스트 데이터베이스는 통합 테스트를 수행 할 것입니다 (귀하의 DAL 테스트). 단위 테스트를 위해 DAL을 대체하기 위해 조롱을 사용하여 실제로 데이터베이스에 도달하지 않은 상태에서 로직을 테스트 할 수 있습니다 (예 : 모의을 제공하여 코드가 DAL을 올바르게 호출하는지 확인). – Todd