C# 成员资格提供者的集成测试
我正在尝试对成员资格提供程序进行集成测试。。。看起来是这样的:C# 成员资格提供者的集成测试,c#,integration-testing,visual-studio-2013,asp.net-mvc-5,C#,Integration Testing,Visual Studio 2013,Asp.net Mvc 5,我正在尝试对成员资格提供程序进行集成测试。。。看起来是这样的: [TestClass] public class UnitTestMembershipProvider { [TestMethod] public void Are_There_Membership_Users() { // Arrange MembershipUserCollection users = Membership.GetAllUsers(); /
[TestClass]
public class UnitTestMembershipProvider
{
[TestMethod]
public void Are_There_Membership_Users()
{
// Arrange
MembershipUserCollection users = Membership.GetAllUsers();
//Assert
Assert.IsTrue(users.Count > 0);
}
}
为什么我会得到以下结果
Test Name: Are_There_Membership_Users
Test FullName: Something.UnitTests.Controllers.UnitTestMembershipProvider.Are_There_Membership_Users
Test Source: c:\Users\James\Source\Workspaces\Something\Something.UnitTests\Controllers\UnitTestMembershipProvider.cs : line 12
Test Outcome: Failed
Test Duration: 0:00:00.0298722
Result Message:
Test method Something.UnitTests.Controllers.UnitTestMembershipProvider.Are_There_Membership_Users threw exception:
System.UnauthorizedAccessException: Access to the path 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 12.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\App_Data' is denied.
Result StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
at System.IO.Directory.CreateDirectory(String path)
at System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString)
at System.Web.DataAccess.SqlConnectionHelper.EnsureDBFile(String connectionString)
at System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation)
at System.Web.Security.SqlMembershipProvider.GetAllUsers(Int32 pageIndex, Int32 pageSize, Int32& totalRecords)
at System.Web.Security.Membership.GetAllUsers(Int32 pageIndex, Int32 pageSize, Int32& totalRecords)
at System.Web.Security.Membership.GetAllUsers()
at Something.UnitTests.Controllers.UnitTestMembershipProvider.Are_There_Membership_Users() in c:\Users\James\Source\Workspaces\Something\Something.UnitTests\Controllers\UnitTestMembershipProvider.cs:line 14
错误在错误消息中。也。。这是一个集成测试。。因为如果不模仿,你的会员资格提供者会攻击数据库。像这样的小细节:P(这是我一生中写的第二次测试..所以,是的,我想我还没有完全理解..呵呵。。这是否意味着这样的测试可以位于主应用程序内部,而不是单元测试区域?我意识到这个测试是多么微不足道。。这主要是一个实践案例。完美整合测试。它应该在集成测试区域中,具有一个连接字符串的配置,该字符串与成员数据库通信。我认为将它们从单元测试项目中分离出来是“非常”重要的。