2015-11-09 7 views
1

Я хотел бы использовать тестовую среду Specs2 для тестирования, но я получаю java.lang.reflect.MalformedParameterizedTypeException, когда я пытаюсь интегрировать его с Spring.Specs2 Спецификация Spring Autowire

Существует specs2-spring library, но это использование 2.10 и старая версия specs2. Я посмотрел на this question about scalaTest и это заставило меня этот код:

@ContextConfiguration(Array("classpath:applicationContext.xml")) 
class TryItTest extends SpecificationWithJUnit{ 

    @Autowired val db:DriverManagerDataSource = null 
    new TestContextManager(this.getClass()).prepareTestInstance(this) 

    "this thing should" should{ 
    "run ok" in { 
     db.getConnection 
     success 
    } 
    } 
} 

, но когда я пытаюсь запустить тест я получаю:

Nov 09, 2015 2:11:31 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
    INFO: Loading XML bean definitions from class path resource [applicationContext.xml] 
    Nov 09, 2015 2:11:31 PM org.springframework.context.support.GenericApplicationContext prepareRefresh 
    INFO: Refreshing [email protected]3d315f: startup date [Mon Nov 09 14:11:31 EST 2015]; root of context hierarchy 
    Nov 09, 2015 2:11:31 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName 
    INFO: Loaded JDBC driver: oracle.jdbc.driver.OracleDriver 
    Nov 09, 2015 2:11:31 PM org.springframework.test.context.TestContextManager prepareTestInstance 
    SEVERE: Caught exception while allowing TestExecutionListener [org.springframewor[email protected]131746d9] to prepare test instance [[email protected]] 
    java.lang.reflect.MalformedParameterizedTypeException 
    at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:58) 
    at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:51) 
    at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:92) 
    at sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105) 
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140) 
    at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) 
    at sun.reflect.generics.repository.ConstructorRepository.getParameterTypes(ConstructorRepository.java:94) 
    at java.lang.reflect.Executable.getGenericParameterTypes(Executable.java:284) 
    at java.lang.reflect.Method.getGenericParameterTypes(Method.java:282) 
    at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:387) 
    at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:116) 

Если я переключаюсь с SpecificationWithJUnit к SpecWithJUnit она проходит тест без ошибок , но я не хочу включать в себя все эти черты от руки. Я думаю (по крайней мере) одна из черт в Matchers вызывает проблему. Кто-нибудь еще пытался это сделать с Specs2? Я пропустил что-то важное?

(Я использую Spring V4.1.0.RELEASE)

ответ

1

Понял. Я не использовал последнюю версию scalaz и specs2. Теперь все работает отлично.