0

我的问题是,在对我正在处理的项目进行 tfs 更新后,我无法再进行任何测试。在更新之前它有效,但现在我Spring.Core.TypeMismatchException每次ContextRegistry.GetContext()在我的测试类方法中运行该方法时都会得到一个Init()

MyProjectDao 的唯一变化是其方法的变化和添加的属性。并且已将服务添加到 SpringContext.xml。

这是我得到的例外:

System.Configuration.ConfigurationErrorsException:System.Configuration.ConfigurationErrorsException:创建上下文“spring.root”时出错:PropertyAccessExceptionsException(1 个错误);嵌套的 PropertyAccessExceptions 是:

[Spring.Core.TypeMismatchException:无法将类型 [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67] 的属性值转换为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。,内部异常:Spring.Core.TypeMismatchException:无法转换类型 [CompositionAopProxy_f81c875c2f934fb06773574fb88] 的属性值] 为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。在 Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfNecessary(Type requiredType, Object newValue, String propertyName) in f:\bamboo-home\xml-data\build-dir\SPRNET-RELEASE-JOB1\src\Spring\Spring.Core\ Core\TypeConversion\TypeConversionUtils.cs:MyProject 211.] ---> Spring.Objects.Factory.ObjectCreationException: 在“文件 [C:\Projects\MyProject\MyProject.NET\test\MyProject.Service.Test\bin\Debug\SpringContext.xml] 第 147 行中定义名称为“MyProjectService”的对象创建时出错:设置属性值时出错:PropertyAccessExceptionsException (1 个错误);嵌套的 PropertyAccessExceptions 是:[Spring.Core.TypeMismatchException:无法将类型 [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67] 的属性值转换为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。内部异常:Spring.Core.TypeMismatchException:无法转换属性值[CompositionAopProxy_f81c875c2f994f88bb773f5743050b67] 类型为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。在 Spring.Core.TypeConversion.TypeConversionUtils。ConvertValueIfNecessary(Type requiredType, Object newValue, String propertyName) in f:\bamboo-home\xml-data\build-dir\SPRNET-RELEASE-JOB1\src\Spring\Spring.Core\Core\TypeConversion\TypeConversionUtils.cs:MyProject 211.] ---> Spring.Objects.PropertyAccessExceptionsException:PropertyAccessExceptionsException(1 个错误);嵌套的 PropertyAccessExceptions 是:[Spring.Core.TypeMismatchException:无法将类型 [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67] 的属性值转换为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。内部异常:Spring.Core.TypeMismatchException:无法转换属性值[CompositionAopProxy_f81c875c2f994f88bb773f5743050b67] 类型为属性“MyProjectDao”所需的类型 [MyProject.Dao.MyProjectDao]。

MyProjectDao 类如下所示:

namespace MyProject.Dao
{
    [DataAccessObject]
    [Transaction(TransactionPropagation.Mandatory)]
    public class MyProjectDao : IMyProjectDao
    {
        public ISessionFactory SessionFactory { private get; set; }

        // ... Methods ... 
    }
}

IMyProjectDao 接口:

namespace MyProject.Dao
{
    public interface IMyProjectDao
    {
        // ... Methods ... 
    }
}

这是我的 SpringContext.xml 的一部分

<!-- ######################## -->
<!--            DAO           -->
<!-- ######################## -->

<object id="MyProjectDao" type="MyProject.Dao.MyProjectDao, MyProject">
    <property name="SessionFactory" ref="SessionFactory" />
</object>

<!-- ######################## -->
<!--          Service         -->
<!-- ######################## -->

<object id="MyProjectService" type="MyProject.Service.MyProjectService, MyProject">
    <property name="MyProjectDao"       ref="MyProjectDao" />
    <property name="PersistenceService" ref="PersistenceService" />
    <property name="DeletedObjectCache" ref="DeletedObjectCache" />
</object>
4

1 回答 1

2

您是在 MyProjectDao 属性的 MyProjectService 中使用接口“IMyProjectDao”还是使用“MyProjectDao”类。

如果您使用该类,请将其更改为接口。

将 MyProjectService 类中的属性更改为:

public MyProjectDao MyProjectDao { get; set; }

public IMyProjectDao MyProjectDao { get; set; }
于 2013-05-24T22:03:49.623 回答