我的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();
}
}
答案 0 :(得分:0)
查看错误消息:
在Real.Shared.Dependency..cctor()
.cctor表示这是一个静态构造函数,它匹配错误消息的“type initializer”部分。
我在Google上找不到Real.Shared.Dependency
的任何内容;那是你的一个班级吗?如果是这样,我会检查该类型的静态构造函数。如有必要,在那里设置一个断点并运行单元测试;看看是否取消引用任何空值。
尽量编写最简单有意义的测试。追踪它。如果需要,可以发布测试方法的代码(包括SetUp,如果有的话)。如果Dependency是你的类注释并发布静态构造函数代码。请先努力自己解决这个问题;您可以访问完整的源代码和调试器,但我们没有。