加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 单元测试适配器抛出异常:无法在ASP.NET MVC中加

发布时间:2020-12-16 06:41:39 所属栏目:asp.Net 来源:网络整理
导读:使用ASP.NET MVC 1.0(当前)我在x64机器(Server 2008)上使用Visual Studio 2008创建一个新的默认ASP.NET MVC项目,并接受所有默认值并构建并运行它.除了必须将System.Web.*程序集设置为“复制本地”之外,它还会运行并启动默认的Web应用程序.当我尝试在这个项目
使用ASP.NET MVC 1.0(当前)我在x64机器(Server 2008)上使用Visual Studio 2008创建一个新的默认ASP.NET MVC项目,并接受所有默认值并构建并运行它.除了必须将System.Web.*程序集设置为“复制本地”之外,它还会运行并启动默认的Web应用程序.当我尝试在这个项目上运行单元测试时,我得到:

单元测试适配器引发异常:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.

现在如果我在x86机器(Server 2003)上使用VS2008重复相同的练习,那么所有27个默认单元测试运行正常. (另外,我不需要将System.Web.*程序集标记为“Copy Local”)

解决异常的想法?

更多信息:
在尝试了一些建议的解决方案之后,我开始评论用新项目生成的样板测试代码的部分内容.因此,我认为错误是通过包含以下类之一生成的:

public class MockIdentity : IIdentity
    {
        public string AuthenticationType
        {
            get
            {
                return "MockAuthentication";
            }
        }

        public bool IsAuthenticated
        {
            get
            {
                return true;
            }
        }

        public string Name
        {
            get
            {
                return "someUser";
            }
        }
    }

    public class MockPrincipal : IPrincipal
    {
        IIdentity _identity;

        public IIdentity Identity
        {
            get
            {
                if (_identity == null)
                {
                    _identity = new MockIdentity();
                }
                return _identity;
            }
        }

        public bool IsInRole(string role)
        {
            return false;
        }
    }

    public class MockMembershipUser : MembershipUser
    {
        public override bool ChangePassword(string oldPassword,string newPassword)
        {
            return newPassword.Equals("newPass");
        }
    }

    public class MockHttpContext : HttpContextBase
    {
        private IPrincipal _user;

        public override IPrincipal User
        {
            get
            {
                if (_user == null)
                {
                    _user = new MockPrincipal();
                }
                return _user;
            }
            set
            {
                _user = value;
            }
        }
    }

解决方法

首先,您是否在发布配置中尝试过它?你有没有完成你的解决方案?

您是否尝试过构建测试项目?取出测试的源文件,从解决方案中删除项目并添加一个引用MVC应用程序的新测试项目.然后重新添加测试源文件.

编辑

您在测试中使用和实现的类和接口是否在范围内?

编辑它是引用x64而不是x86 dll吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读