안녕하세요. Unitils 모듈 사용중 발생한 UnitilsException 관련하여 질문드립니다.

64 views
Skip to first unread message

lib...@gmail.com

unread,
Mar 13, 2013, 2:58:34 AM3/13/13
to tddbo...@googlegroups.com
안녕하세요. 
열심히 TDD를 공부하고 있는 초급 개발자 입니다.

DbUnit과 연동하여 사용하는 Unitils 모듈쪽 실습 중에 있습니다.
그런데 책에 나와있는대로 unitils.properties 파일과 unitils-local.properties 파일 (요건 책에 안나와서 조금 헤맸습니다;;;) 을 만들고
테스트를 실행하니 UnitilsException 이 발생하였습니다.

=====================================================================
org.unitils.core.UnitilsException: An exception occured during the loading of core module database with module class name org.unitils.database.DatabaseModule
at org.unitils.core.ModulesLoader.createAndInitializeModules(ModulesLoader.java:154)
at org.unitils.core.ModulesLoader.loadModules(ModulesLoader.java:121)
at org.unitils.core.Unitils.createModulesRepository(Unitils.java:222)
at org.unitils.core.Unitils.init(Unitils.java:118)
at org.unitils.core.Unitils.init(Unitils.java:105)
at org.unitils.core.Unitils.initSingletonInstance(Unitils.java:74)
at org.unitils.core.Unitils.getInstance(Unitils.java:52)
at org.unitils.UnitilsJUnit4TestClassRunner.getUnitils(UnitilsJUnit4TestClassRunner.java:214)
at org.unitils.UnitilsJUnit4TestClassRunner.getTestListener(UnitilsJUnit4TestClassRunner.java:204)
at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:67)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NoClassDefFoundError: org/springframework/transaction/PlatformTransactionManager
at org.unitils.database.DatabaseModule.init(DatabaseModule.java:159)
at org.unitils.core.ModulesLoader.createAndInitializeModules(ModulesLoader.java:151)
... 15 more
Caused by: java.lang.ClassNotFoundException: org.springframework.transaction.PlatformTransactionManager
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 17 more
=====================================================================

살펴보니깐 DatabaseModule.init() 에서 org.springframework.transaction.PlatformTransactionManager를 사용하고 있는데
현재 로컬에서는 spring을 사용하지 않습니다..
그렇다면 unitils 모듈이 스프링과 의존성이 있는듯한데, 해당 스프링 라이브러리를 사용해야 하나요?
아니면 다른 방안이 있나요?

질문이 두서가 없어 죄송합니다.....

너굴너구리

unread,
Mar 13, 2013, 4:13:31 AM3/13/13
to tddbo...@googlegroups.com, lib...@gmail.com
안녕하세요?
모처럼의 질문이네요.
우선 실습하시느라 고생이 많으세요. ^^;


기존에 존재하는 unitils.properties 파일을 직접 수정하라는 의미였는데
unitils-local.properties파일을 만들고 설정을 넣으셔도 무방합니다.
제가 자칫 오해가 있게 기술되었던 것 같습니다. 그래도 잘 통과하셨네요. ^^;;

2판 기준으로 309페이지를 보면 기술되어 있듯이
unitils는 트랜잭션 기능을 스프링 프레임워크의 트랜잭션 관리기능을 전적으로 사용하고 있습니다.

따라서 페이지 하단 표시되어 있는 의존성 라이브러리들을 build path에 추가해 주셔야 합니다.

만약 이클립스를 사용하고 계시다면 unitils-database/lib 목록의 파일들 중 책에 기술된 파일들을 선택하고
마우스 오른쪽 버튼을 눌러서 add to build path로 추가해 주셔야 합니다.

한번 해보시고 결과 알려주세요.

진행하시다가 궁금하거나 잘 안되는 부분 있으면 언제든 질문 남겨주시고요.

그럼 따뜻한 봄날 되시길 기원합니다.
감사합니다.



2013년 3월 13일 수요일 오후 3시 58분 34초 UTC+9, lib...@gmail.com 님의 말:
Reply all
Reply to author
Forward
0 new messages