Moq单元测试:“'Real.Shared.Dependency'的类型初始化器引发了异常。”

时间:2011-03-20 12:45:07

标签: .net unit-testing initialization moq dependency-properties

我的Moq测试需要帮助。我有一个大项目,当我们开始使用XML配置创建测试时,一切都很顺利。现在已经更改,所有配置都在数据库中。

有些方法已经改变了。 (我使用当前创建单元测试平台并创建一些测试。我想说我是一个新的测试。)现在我有问题:甚至没有一个测试工作。当代码执行尝试启动方法时,我使用一些简单的测试运行得到了下一个错误。

if (!UnitWork.HasStarted) UnitWork.Start();

错误:

The type initializer for 'Real.Shared.Dependency' threw an exception.

StackTrace:

at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at Real.Shared.Dependency..cctor()

我是否需要在测试基类中进行更改,或者有人知道此处还会发生什么?

当我尝试启动UnitWork.Start()时,这是测试中断的方法,这是btw。 public static class

public T ResolveConfValueForURL<T>(string url, string configurationKey)
{
    try
    {
        if (!UnitWork.HasStarted) UnitWork.Start();

        UrlToOrganMapping urlToOrgMap =
            (UrlToOrganMapping)Dependency.Resolve<IUrlToOrganMappingRepository>()
            .GetByUrl( url );

        if ( urlToOrgMap != null )
            return ResolveConfValue<T>(urlToOrgMap.Organization, configurationKey, null);
        else
            return ResolveConfValue<T>(null, configurationKey, null);
    }
    catch (Exception e)
    {
        //Log an eror
        LoggingBLL.LogMessage("Configuration - ResolveConfValueForURL", e);
        throw;
    }
    finally
    {
        if (UnitWork.HasStarted) UnitWork.Finish();
    }
}

1 个答案:

答案 0 :(得分:0)

查看错误消息:

  

在Real.Shared.Dependency..cctor()

.cctor表示这是一个静态构造函数,它匹配错误消息的“type initializer”部分。

我在Google上找不到Real.Shared.Dependency的任何内容;那是你的一个班级吗?如果是这样,我会检查该类型的静态构造函数。如有必要,在那里设置一个断点并运行单元测试;看看是否取消引用任何空值。

尽量编写最简单有意义的测试。追踪它。如果需要,可以发布测试方法的代码(包括SetUp,如果有的话)。如果Dependency是你的类注释并发布静态构造函数代码。请先努力自己解决这个问题;您可以访问完整的源代码和调试器,但我们没有。