[SPRING] TestContextBootstrapper를로드 할 수 없음 - 스프링 유닛 테스트
SPRINGTestContextBootstrapper를로드 할 수 없음 - 스프링 유닛 테스트
Spring을 사용하여 Dao 클래스 중 하나에서 Unit 테스트를 실행해야합니다. 여기 내 단위 테스트입니다 :
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:app-config.xml"})
@ActiveProfiles("local")
public class HouseDaoTest {
@Autowired
HouseDataDao houseDataDao;
@Test
public void saveTest(){
HouseData data = new HouseData();
Address add = new Address();
// Truncating for sake of simplicity
houseDataDao.save(data);
}
}
그리고 나의 bean 설정 파일 :
app-config.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="BeanConfiguration-localhost.xml"/>
<import resource="BeanConfiguration-production.xml"/>
</beans>
BeanConfiguration-localhost.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans profile="local"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config />
<tx:annotation-driven />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/dbtest" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- Tuncated for sake of simplicity -->
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Project Specific Beans -->
<bean id="HouseDataDao" class="com.datasaver.dao.HouseDataDaoImpl"></bean>
</beans>
여기서 BeanConfiguration-production.xml은 mvn 테스트를 수행하는 maven 테스트를 단순히 실행하면 다음 예외가 발생하지 않습니다. stacktrace에 원인이 포함되어 있기 때문에 종속성 또는 무언가가 누락 된 것 같습니다. java.lang.NoSuchMethodError : org.springframework.beans.BeanUtils.instantiateClass. 다음은 내 pom.xml에있는 Spring의 종속성 목록입니다. 테스트 중에 기존 스프링 (2.5.6)의 새로운 버전 (4.1.4.RELEASE)을 사용하고 있기 때문에 버전 충돌이있을 수 있습니다. 스프링 컨텍스트, 스프링 코어, 스프링 테스트 버전을 동일하게 유지하십시오. 나를 위해 그것은 3 모두 4.1.6이며, 이것은 내 버전 충돌을 해결. 필자의 경우에는 activemq-all에 의한 버전 충돌이었습니다. 그 의존성 (필자의 경우 5.12.2)은 호환되지 않는 버전의 스프링을 포함하고있다 (나는 스프링 4.3.4로 업그레이드했다). 따라서 몇 시간 동안 디버깅을하지 않고 자주 사용하는 IDE의 Dependency Hierarchy를 확인하고 jar 파일을 조사하여 org.springframework 패키지가 포함되어 있는지 확인하십시오. Maarten이 맞습니다. 내게 도움이되는 pom.xml의 새 종속성 목록은 다음과 같습니다. from https://stackoverflow.com/questions/28013452/could-not-load-testcontextbootstrapper-spring-unit-testing by cc-by-sa and MIT licensejava.lang.IllegalStateException: Could not load TestContextBootstrapper [class org.springframework.test.context.support.DefaultTestContextBootstrapper]. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.
at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:87)
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:102)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:124)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:115)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:81)
... 25 more
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
...
해결법
1.테스트 중에 기존 스프링 (2.5.6)의 새로운 버전 (4.1.4.RELEASE)을 사용하고 있기 때문에 버전 충돌이있을 수 있습니다.
2.스프링 컨텍스트, 스프링 코어, 스프링 테스트 버전을 동일하게 유지하십시오. 나를 위해 그것은 3 모두 4.1.6이며, 이것은 내 버전 충돌을 해결.
3.필자의 경우에는 activemq-all에 의한 버전 충돌이었습니다. 그 의존성 (필자의 경우 5.12.2)은 호환되지 않는 버전의 스프링을 포함하고있다 (나는 스프링 4.3.4로 업그레이드했다). 따라서 몇 시간 동안 디버깅을하지 않고 자주 사용하는 IDE의 Dependency Hierarchy를 확인하고 jar 파일을 조사하여 org.springframework 패키지가 포함되어 있는지 확인하십시오.
4.Maarten이 맞습니다. 내게 도움이되는 pom.xml의 새 종속성 목록은 다음과 같습니다.
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.5.4-Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
</dependencies>
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트로 자동으로 https로 리디렉션하는 방법 (0) | 2019.01.23 |
---|---|
[SPRING] Spring과 Abstract 클래스 - 추상 클래스에서 속성 삽입 (0) | 2019.01.23 |
[SPRING] 오류 : Spring 컨트롤러를 사용하는 javax.persistence.JoinColumn.foreignKey () Ljavax / persistence / ForeignKey (0) | 2019.01.23 |
[SPRING] 봄 주석이 작동하지 않는다. (0) | 2019.01.23 |
[SPRING] 봄 부팅 CSS 빈 / 모든 것을 시도한 후에 로딩하지 않는 것을 보여주는 (0) | 2019.01.23 |