2012-05-18 3 views
0

nhibernate 데이터 액세스 코드를 언더 레이와 함께 사용자 지정 asp.net 멤버 자격 공급자를 사용하고 있습니다. 이제 테스트를 사용하여 이러한 메서드를 연습해야합니다.사용자 지정 ASP.NET 멤버 자격 공급자를 테스트하십시오.

이러한 방법을 테스트하는 방법을 제안하는 데 관심이있는 사람은 누구입니까? 어쩌면 일부 standars를 사용하여 테스트 방법을 설명하는 링크를 제공하는 것일까 요?

이것은 이러한 종속성 있도록 해제 커플해야 데이터베이스 또는 제 3 자 라이브러리 무언가를 어떤 코드를 테스트 장치에 올 때 내 첫 번째 질문이 너무 :

+0

시도해 보셨습니까? http://geekswithblogs.net/AzamSharp/archive/2007/12/30/118071.aspx – Grunf

답변

1

을 부드럽게 당신의 테스트에만 테스트 당신의 코드.

예를 들어 단일 사용자 추가를위한 멤버 자격 공급자에 메서드가있는 경우 테스트하려는 코드는이 단일 메서드에 대한 코드가 올바르게 작동하고 데이터베이스가 실행 중이거나 해당 메서드가 작동하지 않는 것입니다 이 메소드 작업에 의해 호출됩니다. 데이터베이스가 오프라인이거나 다른 클래스의 메소드 호출이 실패하는 경우에도 단위 테스트는 계속 진행됩니다.

여기가 조롱이 진행되는 곳입니다. 데이터 컨텍스트를 조롱하고 여기에서 사용할 메소드를 설정하여 응답을 제어 할 수 있습니다.

회원 공급자의 방법을 자세히 살펴보십시오. 각자는 무엇을해야합니까? 그것이 당신이 정말로 시험하고 싶은 유일한 것입니다. 이 방법은 독립 실행 형 장치로서 내가 기대하는 작업을 수행합니까?

+0

나는 CreateUser 메소드를 사용하여 db 테이블에 새로운 사용자를 추가하거나 트랜잭션을 롤백하는 것과 같이 조롱하지 않고 멤버십 공급자 내에서 메소드를 테스트하려고했습니다. 테스트하기 전의 상태로 db를 남겨 둡니다. 이 접근법을 따라야합니까? 나에게 이상하게 조롱해라. – panjo

+0

개인적으로 나는 조롱이 더 효율적인 접근법이라고 생각한다. 데이터베이스에 데이터를 삽입하고 롤백하면 코드 단위를 테스트하는 것이 아니라 네트워크, 네트워크 연결, 데이터베이스 엔진 등을 테스트하는 것입니다. 단위 테스트를 작성할 때 자신감을 갖기를 원합니다. 내 코드가 예상대로 작동하며 네트워크가 다운 된 경우 테스트가 실패 할 것으로 기대하지 않습니다. –

+0

괜찮아요, 조롱하고 있습니다 :) 회원 모집에 대한 구체적인 예가있는 링크 – panjo

0

회원 제공 업체는 조롱과 테스트가 매우 어렵 기 때문에 개인적으로 신경 쓰지 않습니다. 그러나 내가하는 일은 이 쉽게 테스트 할 수있는 인 클래스에 모든 회원 코드를 배치하는 것입니다. 나는 사용자 서비스의 동작을 확인하기 위해 통합 테스트를 작성하는 것이 예에서는

public class CustomMembershipProvider : MembershipProvider 
    { 
     private readonly IUserService _userService; 

     public ButlinsMembershipProvider() 
     { 
      _userService = DI.Resolve<IUserService>(); 
     } 

     public override bool ValidateUser(string username, string password) 
     { 
      return _userService.Authenticate(username, password); 
     } 
} 

:

내 사용자 지정 공급자의 대부분을

이 같은 모양. 나는 공급자를 시험하지 않는다.

관련 문제