2013-05-15 3 views
0

이 단위 테스트에서 중복 이메일 및 사용자 이름을 확인해야합니다. 다른 개발자와 이야기하면서 그는 중첩 된 try catch에서 중복 된 전자 메일과 사용자 이름을 확인해야한다고 말했다. 나는 그를 정확하게 이해했는지 안했는지 모르겠다. 그러나 여기에는 내가 가진 것이있다. 다른 개발자는 현재 사용할 수 없으므로 확인을 요청할 수 없습니다. 이 형식이 맞지 않다고 생각하는 Im. 어떤 충고?단위 테스트에서 중복 이메일 및 사용자 이름 확인

 try 
     { 

      AsaMembershipProvider prov = this.GetMembershipProvider(); 


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


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


      var isAuthenticated = prov.ValidateUser(user.UserName, "12345"); 
      Assert.IsTrue(isAuthenticated); 
      Assert.AreEqual(user.UserName, "UserX"); 
      Assert.AreEqual(user.Email, "[email protected]"); 

      try 
      { 

       prov.DeleteUser("UserX", true); 

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

       Assert.AreEqual(null, user); 
       user = prov.GetUser("UserX", false); 


       Assert.AreEqual(status, MembershipCreateStatus.Success); 
      } 
      catch (Exception ex) 
      { 
       LogMessage(ex); 
       Assert.Fail(ex.Message); 
      } 


      prov.DeleteUser("UserX", true); 

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

      Assert.AreEqual(null, user); 


     } 
     catch (Exception ex) 
     { 
      LogMessage(ex); 
      Assert.Fail(ex.Message); 
     } 

    } 
+1

귀하의 질문은 조금 모호합니다. 그러나 * 당신이 묻고있는 모든 질문은 * 중첩 된 try catch (try/catch 내의 try/catch)입니다. 구현에 문제가 있습니까? 오류/예기치 않은 결과? – tnw

+0

여기서는 두 가지 가정을 할 것입니다. 1) 사용자가 데이터베이스에 저장 중입니다. 2) 사용자 테이블은 전자 메일에 고유 한 인덱스를 가지고 있습니다. 동일한 전자 메일을 사용하여 사용자를 두 번 생성해야하며 데이터베이스 클라이언트가 고유 인덱스 덕분에 적절한 예외를 throw해야합니다. – allonhadaya

+0

나에게 설명했듯이 중첩 된 try catch는 중복 된 전자 메일을 발견하고 테스트를 계속해야하지만 예외가 발생하면 예외를 throw해야합니다. – user216672

답변

0
Assert.Throws<T>에 대한 호출을 try 블록의 코드를 이동

:

Assert.Throws<Exception>(() => { 
    // attempt to create a duplicate user. 
}, "Exception thrown when creating duplicate user."); 

변경 Exception 당신이 중복 생성 될 때 발생 될 것으로 예상 정확한 예외 유형.

관련 문제