2013-05-13 5 views
1

나는 단위 테스트를 처음 접했고 테스트를 위해 항상 "보아야"하지 않습니다. 현재 사용자가 앱에서 삭제되었음을 확인하기 위해 단위 테스트를 만들고 있습니다.사용자 단위 삭제 테스트

여기까지 제가 지금까지 있습니다. 누구든지 이걸보고 다른 것들을 테스트하거나 내가 삭제 된 사용자 계정에 대해 대부분 다룰 수 있도록 몇 가지 권장 사항을 만들 수 있습니까?

  MembershipProvider prov = this.GetMembershipProvider(); 
      MembershipCreateStatus status; 
      MembershipUser user = prov.CreateUser("UserX", "12345", "[email protected]", "", "", true, null, out status); 

      //call get user 
      user = prov.GetUser("UserX", false); 

      //Deletes user and all related information 
      prov.DeleteUser("UserX", true); 

      // Try to retrieve user again 
      user = prov.GetUser("UserX", false); 

      //test to see if user has been deleted 
      Assert.AreEqual(null, user); 
+0

괜찮아 보입니다. 그 전에는 사용자를 생성하고 올바르게 생성되었는지 테스트해야합니다. –

+0

감사합니다. 나는 그 일을 진행하고있다. 나는 붙어있어 다른 것으로 옮기고 싶다. – user216672

+0

실패 할 경우 (예 : 존재하지 않는 사용자를 삭제하려는 경우)를 찾고 예상대로 실패하는지 확인하고 싶을 수 있습니다. –

답변

1

CreateUser()을 호출 한 후 statususer이 예상 한 값인지 확인해야합니다.

user = prov.GetUser("UserX", false);으로 처음 전화 한 후 user이 예상 한 것임을 확인해야합니다. 예를 들어 null이 아니고 사용자 이름이 올바른지 확인하십시오.

DeleteUser()에 반환 값이 있는지 여부는 확실하지 않습니다. 그렇다면 값이 선택되어 있는지 확인하십시오.

1

이것은 단위 테스트보다 더 많은 통합 테스트와 비슷합니다. 나는 GetUser, DeleteUser 메쏘드가 데이터베이스 호출을한다고 가정하기 때문에 이것을 말하고있다. 따라서 사용자 개체 만들기, 데이터베이스에 대한 사용자 개체의 지속성, 사용자 개체 삭제 및 사용자 개체 검색 시도 등 여러 작업 단위가 있습니다.

당신이 작성한 방법으로는 아무 것도 증명할 수 없기 때문에 각 상태가 변경된 후에 가정을해야합니다. 말 그대로, 각 메소드는 모든 입력 매개 변수를 무시하고 null을 반환 할 수 있으며 테스트가 통과합니다. 당신은 당신이 그것을 삭제했다는 것을 확신 할 수 있기 전에 사용자가 첫번째 장소에 존재하는지 확인하기를 원할 것입니다.

당신의 MembershipProvider 같은 구현이 상상해 : 모든 테스트를 통과 할이 코드

public class CustomMembershipProvider : MembershipProvider 
    { 
      public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, stringpasswordAnswer , bool isApproved, object providerUserKey, ref MembershipCreateStatus status) 
      { 
       status = default(MembershipCreateStatus); 
       return default(MembershipUser); 
      }   

      public override MembershipUser GetUser(string username, bool login) 
      { 
       return default(MembershipUser); 
      } 

      public override bool DeleteUser(string username, bool deleteRelatedData) 
      { 
       return default(bool); 
      } 
    } 

을하고, 실제로 그렇지 않습니다 때, 응용 프로그램의 멤버십 기능이 제대로 작동하는지 생각 aways를 걷는 것 전혀해라. 일반적으로 단위 테스트가 유용한 지 알아 보는 좋은 방법은이를 깨뜨리는 것입니다. 단위 테스트를 거짓말로 만들 수 있다면 잘못 쓰는 것입니다.