1
我想使用Specs2測試框架進行測試,但是當我嘗試將它與Spring集成時,我得到java.lang.reflect.MalformedParameterizedTypeException。規格2規格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)