我正在使用自定義asp.net成員資格提供程序,並使用nhibernate數據訪問代碼,這很好。現在我需要使用測試來鍛鍊這些方法。測試自定義ASP.NET成員資格提供程序
有興趣提出這些方法應該如何測試的人?提供一些鏈接來解釋使用一些標準的測試方法可能?
這是我的第一個問題,所以要溫柔:)
我正在使用自定義asp.net成員資格提供程序,並使用nhibernate數據訪問代碼,這很好。現在我需要使用測試來鍛鍊這些方法。測試自定義ASP.NET成員資格提供程序
有興趣提出這些方法應該如何測試的人?提供一些鏈接來解釋使用一些標準的測試方法可能?
這是我的第一個問題,所以要溫柔:)
當涉及到單元測試,做與數據庫或第三方庫的東西,你應該去耦這些依賴關係,使任何代碼的測試,只有測試你的代碼。例如,如果我們的成員資格提供程序中有一個用於添加單個用戶的方法,那麼我們要測試的是我們的單一方法的代碼正常工作,而不是數據庫已啓動並正在運行,或者該方法由此方法調用工作。即使數據庫處於脫機狀態,或者其他類的方法調用失敗,我們的單元測試仍應該通過。
這是Mocking進場的地方。你會想要嘲笑你的數據上下文,並設置你將要使用的任何方法,這樣你就可以控制它的響應。
仔細查看您的會員提供商的方法。每個人應該做什麼?這是你真正想測試的唯一的東西。這種方法作爲一個獨立的單位來完成我期待的工作嗎?
會員提供商很難模擬和測試,所以我個人不打擾。然而,我所做的是將所有我的會員代碼放在爲的類別中,方便測試。
我大部分的自定義提供的是這個樣子:
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);
}
}
在這個例子中,我會寫集成測試,以驗證用戶服務的行爲。我不測試提供者。
你試過這個嗎? http://geekswithblogs.net/AzamSharp/archive/2007/12/30/118071.aspx – Grunf