gpt4 book ai didi

unit-testing - Sharp Architecture 2.0 单元测试

转载 作者:行者123 更新时间:2023-12-04 06:21:31 27 4
gpt4 key购买 nike

我只是想测试一些涉及数据库的验证。我的测试代码的设置如下所示:

[TestFixture]
public class UserValidatorTester : RepositoryTestsBase
{
[SetUp]
public void Setup()
{
ServiceLocatorInitializer.Init();
base.SetUp();
}


...

ServiceLocatorInitializer 看起来像这样:
    public class ServiceLocatorInitializer
{
public static void Init()
{
IWindsorContainer container = new WindsorContainer();

container.Register(
Component
.For(typeof(IEntityDuplicateChecker))
.ImplementedBy(typeof(EntityDuplicateChecker))
.Named("entityDuplicateChecker"));

container.Register(Component.For(typeof(ISessionFactoryKeyProvider)).ImplementedBy(typeof(DefaultSessionFactoryKeyProvider)).Named("sessionFactoryKeyProvider"));


ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
}
}

我正进入(状态:
at SharpArch.Domain.SafeServiceLocator`1.GetService()

在 SharpArch.NHibernate.SessionFactoryKeyHelper.GetKeyFrom(Object anObject)
在 SharpArch.NHibernate.NHibernateRepositoryWithTypedId 2.get_Session()
at EID2.Tasks.Repositories.UserRepository.SaveOrUpdate(User entity) in C:\Users\csetzkorn\Documents\Visual Studio 2010\Projects\EID2\Solutions\EID2.Tasks\Repositories\UserRepository.cs:line 17
at EID2.Tasks.UserTasks.CreateUser(CreateUserViewModel CreateUserViewModel) in C:\Users\csetzkorn\Documents\Visual Studio 2010\Projects\EID2\Solutions\EID2.Tasks\UserTasks.cs:line 33
at EID2.Tests.Validation.UserValidatorTester.LoadTestData() in C:\Users\csetzkorn\Documents\Visual Studio 2010\Projects\EID2\Solutions\EID2.Tests\Validation\UserValidatorTester.cs:line 39
at SharpArch.Testing.NUnit.NHibernate.RepositoryTestsBase.SetUp()
--NullReferenceException
at Microsoft.Practices.ServiceLocation.ServiceLocator.get_Current()
at SharpArch.Domain.SafeServiceLocator
1.获取服务()

基督教

PS:

包含的dll:
<ItemGroup>
<Reference Include="Castle.Core">
<HintPath>..\..\Packages\Castle.Core.2.5.2\lib\SL4\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Castle.Windsor">
<HintPath>..\..\Packages\Castle.Windsor.2.5.3\lib\NET40\Castle.Windsor.dll</HintPath>
</Reference>
<Reference Include="CommonServiceLocator.WindsorAdapter">
<HintPath>..\..\Packages\CommonServiceLocator.WindsorAdapter.1.0\lib\NET35\CommonServiceLocator.WindsorAdapter.dll</HintPath>
</Reference>
<Reference Include="EID2.Tasks">
<HintPath>..\xxx.Tasks\bin\Debug\xxx.Tasks.dll</HintPath>
</Reference>
<Reference Include="FluentValidation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a82054b837897c66, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Packages\FluentValidation\FluentValidation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\..\Packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="MvcContrib.TestHelper">
<HintPath>..\..\Packages\MvcContrib.Mvc3-ci.3.0.68.0\lib\MvcContrib.TestHelper.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\ReferencedAssemblies\NHibernate\NHibernate.dll</HintPath>
</Reference>
<Reference Include="NHibernate.ByteCode.Castle">
<HintPath>..\..\ReferencedAssemblies\NHibernate\NHibernate.ByteCode.Castle.dll</HintPath>
</Reference>
<Reference Include="NHibernate.Validator">
<HintPath>..\..\ReferencedAssemblies\NHibernate\NHibernate.Validator.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\..\Packages\NUnit.2.5.10.11092\lib\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="Rhino.Mocks">
<HintPath>..\..\ReferencedAssemblies\RhinoMocks\Rhino.Mocks.dll</HintPath>
</Reference>
<Reference Include="SharpArch.Domain">
<HintPath>..\..\ReferencedAssemblies\SharpArchitecture\SharpArch.Domain.dll</HintPath>
</Reference>
<Reference Include="SharpArch.NHibernate">
<HintPath>..\..\ReferencedAssemblies\SharpArchitecture\SharpArch.NHibernate.dll</HintPath>
</Reference>
<Reference Include="SharpArch.Testing">
<HintPath>..\..\ReferencedAssemblies\SharpArchitecture\SharpArch.Testing.dll</HintPath>
</Reference>
<Reference Include="SharpArch.Testing.NUnit">
<HintPath>..\..\ReferencedAssemblies\SharpArchitecture\SharpArch.Testing.NUnit.dll</HintPath>
</Reference>
<Reference Include="SharpArch.Tests">
<HintPath>..\..\ReferencedAssemblies\SharpArchitecture\SharpArch.Tests.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite">
<HintPath>..\..\Packages\System.Data.SQLite.1.0.66.0\lib\System.Data.SQLite.DLL</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\ReferencedAssemblies\ASP.NET MVC\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>

缴费灵:

sql精简配置
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
<property name="connection.connection_string">Data Source=:memory:;Version=3;New=True;</property>
<property name="connection.release_mode">on_close</property>
<property name="show_sql">true</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
</session-factory>
</hibernate-configuration>

最佳答案

sqlite 可能会出现一些问题,并且针对不同的问题有不同的解决方案,我认为您遇到的问题是因为 sqlite.dll 是针对 .net System.Data 构建的,而您拥有的是 .net 4 System .Data,尝试添加:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>

到测试 app.config 中的配置元素。

此外,如果您在 x64 机器上,并且正在引用 x86 sqlite,那么您需要将测试程序集的目标框架更改为 x86(右键单击项目,选择属性,构建选项卡,并为目标框架选择 x86)

关于unit-testing - Sharp Architecture 2.0 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com