2012-12-17 8 views
8

私はSpringベースのコンフィグレーションでSpring 3.2を使用しており、ユニットテスト(JUnit 4.8.1)にいくつか問題があります。なぜ私はこのエラーを受け取りますSpring blog状態としてJavaベースのコンフィグレーションでのSpring 3.2ユニットテスト

Caused by: java.lang.IllegalStateException: CGLIB is required to process @Configuration classes. Either add CGLIB to the classpath or remove the following @Configuration bean definitions: [testConfig] 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:327) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:222) 

、春3.2はCGLIB 3をインライン化されています

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes={TestConfig.class}) 
public class ManualTest 
{ 
    @Autowired 
    ... 

Howeever、私はこのエラーが発生します:これはテストランナーのですか?

ビルド管理ツールとしてGradle 1.3を、IDEとしてSTSを使用しています。 gradle eclipseのGradleを呼び出す場合は、二度の依存関係を引き込む:平野jarファイルとライブラリと1時間と1時間: plain jar

やライブラリとしてより:

library

プレーン瓶など

ファーストをプレーンジャーのセクションでは、私はまだSpring 3.1を構成していましたが、ライブラリのセクションではSpring 3.2でした。だから私は普通の瓶を取り除き、すべてが機能していた。

これは私がすべてのEclipseプロジェクトと設定し、すべてのGradleの一時ファイルを削除

configurations 
{ 
    driver 
} 

dependencies 
{ 
    driver 'com.oracle:ojdbc6:11.2.0' 

    compile "org.springframework:spring-jdbc:$springVersion" 

    testCompile 'com.oracle:ojdbc6:11.2.0' 
    testCompile "org.springframework:spring-test:$springVersion" 
    testCompile "commons-dbcp:commons-dbcp:$dbcpVersion" 
    testCompile "junit:junit:$junitVersion" 
    testCompile "org.slf4j:slf4j-log4j12:$slf4jVersion" 
} 

sourceSets 
{ 
    main 
    { 
     java 
     { 
      srcDirs 'src/main/java', "$buildDir/generated-sources/" 
     } 
    } 
} 

そして、マスタープロジェクト

configure(allprojects) 
{ 
    ext.dbcpVersion = '1.4' 
    ext.springVersion = '3.2.0.RELEASE' 
    ext.junitVersion = '4.8.1' 
    ext.slf4jVersion = '1.7.2' 
} 

subprojects 
{ 
    // Artifact settings 
    group = 'xxx' 
    version = '1.0-SNAPSHOT' 

    // Standard plugins 
    apply plugin: 'java' 
    apply plugin: 'eclipse' 

    // Repositories 
    repositories 
    { 
     mavenLocal() 
     maven 
     { 
      url "http://repo.springsource.org/release" 
     } 
     mavenCentral() 
    } 

    // Standard dependencies 
    dependencies 
    { 
    } 
} 
+0

あなたのクラスパスコンテンツを投稿できますか?またはmavenを使用している場合はpom.xml? – ElderMael

+0

Eclipseとgradleコマンドラインの両方で失敗しますか? – artbristol

+0

Eclipse(STS)のみ。 – ChrLipp

答えて

2

からbuild.gradle build.gradle私のプロジェクトです。それからEclipse(Import Gradleプロジェクト..)でプロジェクトをインポートしようとしました。これは例外で失敗しました。それから、Eclipseプロジェクト内のGradle設定を削除した後、インポートが機能しました。

gradle eclipseとバージョン1.3は使用しません。

また、追加のソースセットパスは、ソースプロジェクトとしてEclipseプロジェクトに移行しませんでした。

1

私は同じ問題がありました。

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

あなたの単体テストとランタイムコードは、cglibエラーなしで正しく動作するはずです。

+0

私はプロジェクトをMavenからGradleに移行しました。驚いたことに、使用されているスプリングコンテキスト依存関係は、期待される4.xではなく3.1.xです。これは例外を説明しています。なぜなら、SpringインラインCGLibは3.2からではなく以前からではないからです。上記の依存関係を加えた後、エラーは消えた。これは、gradleがMavenのインポートスコープをまだサポートしていないことが残念です。それ以外の場合は、部品表(BOM)も使用できます。 – rwitzel

関連する問題