TestNG + Spring + JPA+Hibernateの「HelloWorld」テストを実行しようとしています。実行するとNullPointerExceptionが発生し、タイルコンフィギュレーターBeanは失敗します。
例外:
2011-08-20 18:12:18,547 [main] INFO org.springframework.web.servlet.view.tiles2.TilesConfigurer-TilesConfigurer:定義の追加[/WEB-INF/tiles/tiles.xml]
annotation.internalScheduledAnnotationProcessor、org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0、org.springframework.transaction.interceptor.TransactionInterceptor#0、org.springframework.transaction.config.internalTransactionAdvisor、homeController、userSessionController、NHUserDAOImpl、org.springframework.context annotation.internalConfigurationAnnotationProcessor、org.springframework.context.annotation.internalAutowiredAnnotationProcessor、org.springframework.context.annotation.internalRequiredAnnotationProcessor、org.springframework.context.annotation.internalCommonAnnotationProcessor、org.springframework.context.annotation.internalPersistenceAnnotationProcess 工場階層のルート AnnotationTransactionAttributeSource#0、org.springframework.transaction.interceptor.TransactionInterceptor#0、org.springframework.transaction.config.internalTransactionAdvisor、homeController、userSessionController、NHUserDAOImpl、org.springframework.context.annotation.internalConfigurationAnnotationProcessor、org.springframework.context.annotation。 internalAutowiredAnnotationProcessor、org.springframework.context.annotation.internalRequiredAnnotationProcessor、org.springframework.context.annotation.internalCommonAnnotationProcessor、org.springframework.context.annotation.internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート AnnotationTransactionAttributeSource#0、org.springframework.transaction.interceptor.TransactionInterceptor#0、org.springframework.transaction.config.internalTransactionAdvisor、homeController、userSessionController、NHUserDAOImpl、org.springframework.context.annotation.internalConfigurationAnnotationProcessor、org.springframework.context.annotation。 internalAutowiredAnnotationProcessor、org.springframework.context.annotation.internalRequiredAnnotationProcessor、org.springframework.context.annotation.internalCommonAnnotationProcessor、org.springframework.context.annotation.internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート userSessionController、NHUserDAOImpl、org.springframework.context.annotation.internalConfigurationAnnotationProcessor、org.springframework.context.annotation.internalAutowiredAnnotationProcessor、org.springframework.context.annotation.internalRequiredAnnotationProcessor、org.springframework.context.annotation.internalCommonAnnotationProcessor annotation.internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート userSessionController、NHUserDAOImpl、org.springframework.context.annotation.internalConfigurationAnnotationProcessor、org.springframework.context.annotation.internalAutowiredAnnotationProcessor、org.springframework.context.annotation.internalRequiredAnnotationProcessor、org.springframework.context.annotation.internalCommonAnnotationProcessor annotation.internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート internalPersistenceAnnotationProcessor、nethawalaProperties、placeholderConfig]; 工場階層のルート
2011-08-20 18:12:18,563[メイン]エラーorg.springframework.test.context.TestContextManager-TestExecutionListener[org.springframework.test.context.support.DependencyInjectionTestExecutionListener@fdfc58]がテストインスタンス[com .tigermindz.test.FacultyDaoTest @ 1afae45]
java.lang.IllegalStateException:ApplicationContextのロードに失敗しました
org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308)で
org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)で
org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)で
org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)で
org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance(AbstractTestNGSpringContextTests.java:133)で
sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)で
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で
java.lang.reflect.Method.invoke(Method.java:597)で
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:76)で
org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525)で
org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)で
org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130)で
org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:173)で
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)で
org.testng.TestRunner.runWorkers(TestRunner.java:1147)で
org.testng.TestRunner.privateRun(TestRunner.java:749)で
org.testng.TestRunner.run(TestRunner.java:600)で
org.testng.SuiteRunner.runTest(SuiteRunner.java:317)で
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:312)で
org.testng.SuiteRunner.privateRun(SuiteRunner.java:274)で
org.testng.SuiteRunner.run(SuiteRunner.java:223)で
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)で
org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)で
org.testng.TestNG.runSuitesSequentially(TestNG.java:1039)で
org.testng.TestNG.runSuitesLocally(TestNG.java:964)で
org.testng.TestNG.run(TestNG.java:900)で
org.testng.TestNG.privateMain(TestNG.java:1182)で
org.testng.TestNG.main(TestNG.java:1146)で
原因:org.springframework.beans.factory.BeanCreationException:クラスパスリソース[nethawala-servlet.xml]で定義された「tilesConfigurer」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerExceptionです
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)で
org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:291)で
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)で
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)で
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)で
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)で
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)で
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)で
org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)で
org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)で
org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280)で
org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304)で
...28もっと
原因:java.lang.NullPointerException
org.springframework.web.servlet.view.tiles2.SpringTilesApplicationContextFactory $ SpringWildcardServletTilesApplicationContext。(SpringTilesApplicationContextFactory.java:72)で
org.springframework.web.servlet.view.tiles2.SpringTilesApplicationContextFactory.createApplicationContext(SpringTilesApplicationContextFactory.java:55)で
org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:335)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)で
...41もっと
私applicationContext.xmlは、タイルconfig bean defのみを表示しています:
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/tiles.xml</value>
</list>
</property>
</bean>
多くのグーグルを行いましたが、見つかったのは、春と休止状態の依存関係と競合するcglibおよび/またはasmjarについて人々が言及したことだけです。私はそれがここでは当てはまらないと思いますが、私のlibフォルダーには次のjarファイルがあります。
./tiles-template-2.2.2.jar
./spring-security-acl-3.0.5.RELEASE.jar
./org.springframework.context-3.0.5.RELEASE.jar
./hibernate-jpa-2.0-api-1.0.0.Final.jar
./tiles-api-2.2.2.jar
./validation-api-1.0.0.GA.jar
./org.springframework.web.servlet-3.0.5.RELEASE.jar
./hsqldb.jar
./spring-security-taglibs-3.0.5.RELEASE.jar
./commons-pool-1.5.6.jar
./aspectjrt-1.6.8.jar
./commons-beanutils-1.8.3.jar
./org.springframework.aop-3.0.5.RELEASE.jar
./spring-security-core-3.0.5.RELEASE.jar
./commons-collections-3.1.jar
./org.springframework.web-3.0.5.RELEASE.jar
./jstl-1.2.jar
./org.springframework.expression-3.0.5.RELEASE.jar
./dom4j-1.6.1.jar
./org.springframework.orm-3.0.5.RELEASE.jar
./log4j-1.2.16.jar
./org.springframework.beans-3.0.5.RELEASE.jar
./tiles-servlet-2.2.2.jar
./poi-3.7-20101029.jar
./spring-security-aspects-3.0.5.RELEASE.jar
./slf4j-api-1.6.1.jar
./aopalliance-1.0.jar
./slf4j-simple-1.6.1.jar
./hibernate3.jar
./slf4j-ext-1.6.1.jar
./spring-security-web-3.0.5.RELEASE.jar
./jta-1.1.jar
./asm-3.3.1.jar
./org.springframework.test-3.0.5.RELEASE.jar
./spring-security-config-3.0.5.RELEASE.jar
./org.springframework.core-3.0.5.RELEASE.jar
./org.springframework.asm-3.0.5.RELEASE.jar
./tiles-jsp-2.2.2.jar
./testng-6.0.1.jar
./commons-digester-2.1.jar
./commons-logging-1.1.1.jar
./org.springframework.transaction-3.0.5.RELEASE.jar
./javax.inject.jar
./commons-dbcp-1.4.jar
./slf4j-log4j12-1.6.1.jar
./hibernate-validator-4.1.0.Final.jar
./javassist-3.12.0.GA.jar
./tiles-core-2.2.2.jar
./aspectjweaver-1.6.8.jar
./org.springframework.jdbc-3.0.5.RELEASE.jar
./jackson-all-1.7.5.jar
./jstl-api-1.2.jar
./antlr-2.7.6.jar
./cglib-2.2.jar
テストクラスは次のとおりです。
@ContextConfiguration(locations = { "classpath:test-servlet.xml" })
public class FacultyDaoTest extends AbstractTransactionalTestNGSpringContextTests {
private final XLogger logger = XLoggerFactory.getXLogger(FacultyDaoTest.class);
@Inject
FacultyDAO facultyDao;
@BeforeClass
public void setUp() {
logger.entry();
System.out.println("Inside setup");
}
@Test(groups = { "fast" })
@Rollback(value = false)
public void createFaculty() {
Faculty f = new Faculty();
f.setFirstName("John");
f.setLastName("Frost");
f.setCpsoNumber("23198");
f = facultyDao.makePersistent(f);
assert(f.getId() > 0);
}
@Test(groups = { "fast" })
public void aFastTest() {
logger.entry();
logger.info("Inside a Fast test");
}
@Test(groups = { "slow" })
public void aSlowTest() {
logger.entry();
logger.info("Inside a Slow test");
}
}
どんなポインタでも大歓迎です。