2011-11-23 18 views
35

Spring JUnitテストを実行しようとすると、次のエラーが発生します。私は、Spring Frameworkを使用してJUnitを作成することに精通しています。Spring JUnitテストエラー

JUnitのクラス:

package org.xxx.springdao.mongo_datadictionary; 

import static org.junit.Assert.*; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.ApplicationContext; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.xxx.springdao.mongo_datadictionary.SimpleSpringApp; 


@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration 
public class SpringJunitTest { 


    @Test 
    public void testSpringTest() { 
     SimpleSpringApp test = new SimpleSpringApp(); 
     assertNotNull("Success", test); 
    } 

} 

SpringJunitTest-のcontext.xml:

<pre> 

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans 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:mongo="http://www.springframework.org/schema/data/mongo" 
     xsi:schemaLocation="http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd 
       http://www.springframework.org/schema/data/mongo 
       http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd 
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    </beans> 

</block> 

のpom.xml:

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-commons-core</artifactId> 
     <version>1.2.0.BUILD-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb-cross-store</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb-log4j</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.beans</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.aspects</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongodb-java-driver</artifactId> 
     <version>2.7.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.context</artifactId> 
     <version>3.1.0.RC1</version> 
     <scope>compile</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.core</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.asm</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.aop</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.expression</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.orm</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.transaction</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.test</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 

エラー:

Tests in error:
initializationError(org.saic.springdao.mongo_datadictionary.SpringJunitTest): org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;

スタックトレース:

java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; 
    at org.springframework.test.context.ContextLoaderUtils.resolveContextLoader(ContextLoaderUtils.java:87) 
    at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:298) 
    at org.springframework.test.context.TestContext.<init>(TestContext.java:100) 
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:117) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:119) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:108) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
    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) 
+0

が完了し、このcontext.xmlにファイルです...解決策ではありませんでしたか?そして、あなたはRCバージョンではなく、安定したバージョンのスプリングでサンプルを実行することができますか? 'ContextLoaderUtils'は新しいクラスなので、エラーを追跡するのは難しいと思います。 – melihcelik

+0

私は同じ問題を抱えています。私はmvnクリーンインストールを行うときに働くが、同じエラーでSTSに失敗する。何かがアップしている。3.1.0 RC – user48545

答えて

56

私は、Spring 3.0.6から3.1.0リリースにアップグレードするとき、まったく同じ問題がありました。

いくつかの依存関係は3.1.0バージョンとしてリストされていますが、エラーメッセージにリストされている方法を持たない古いバージョンに推移的依存関係を解決します。

Eclipseを使用している場合は、pom.xmlを開き、依存関係階層タブを確認します。宣言した一部のライブラリは、バージョン3.1.0としてリストされますが、解決された依存性は3.0.6です。私にとっては、私はspring-security-configとspring-security-taglibsをバージョン3.1としていましたが、spring-coreやspring-expressionなどの依存関係は3.0.6と解決しました。

これを解決するには、明示的に最高の推移依存関係をpomに明示的に指定します。たとえば、私は当初、spring-security-configを推測していましたが、これは推移的依存としてSpring-Coreを導入していましたので、私は自分のpomにspring-coreアーチファクトを挙げませんでした。しかし、この問題を解決するために、私はpomにspring-core(バージョン3.1.0)を明示的に組み込むように変更しました。私は古いバージョンに解決されていた自分のpomのすべての解決された依存関係に対して直接の依存関係を追加し、それがうまくいった!

希望します。

+0

ありがとうございました!明示的に必要な依存性を春に定義しましたが、この例外はもうありません! – whatswrong

0

それはおよそjava.lang.NoSuchMethodErrorを文句を言うと、私は、これはあなたの春の依存性に関係していると思います。

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.1.0.RC1</version> 
     <scope>compile</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-asm</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-expression</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 

そして、次の依存関係がどこから来たかはわからないが、私は、彼らは同様に彼らたartifactIdと補正が必要かもしれないと思う:このようなあなたの春の依存関係を変更してみてください

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>org.springframework.transaction</artifactId> 
     <version>3.1.0.RC1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-commons-core</artifactId> 
     <version>1.2.0.BUILD-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb-cross-store</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb-log4j</artifactId> 
     <version>1.0.0.M5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongodb-java-driver</artifactId> 
     <version>2.7.2</version> 
    </dependency> 

そして、もう一つの最終私があなたに考えさせたいもの、本当に本当にそれらの依存関係のすべてが必要ですか?

+0

おかげさまで、springframeworkバージョン3.0.6を使用してしまいエラーが消えてしまった。助けてくれてありがとう。 FYIは私のプロジェクトがmongoDBを使用するテストspring.xmlだったので、私は依存関係の大部分が必要でした。 –

0

ジェイは正しいです。彼が言ったこととorg.springframework.beansからのエラーに基づいて、上記のプロジェクトの依存関係グラフを見直して、推移的な依存関係をorg.springframework.beansで除外し、最新の依存関係を明示するorg.springframework.beansの正しいバージョン。

他の依存関係に対しても同じことが行われるはずですが、壊れていなければそれを修正しないでください;)自分自身のようにあなたのOCDを渡すことができない限り。

私は、プロジェクトを選択して右クリック - >依存関係を表示することでNetbeansを活用しました。依存グラフビューで、Beanを検索します。依存関係をダブルクリックして右クリックすると、ウィンドウのようなウィザードが競合を解決するための追加設定を提供するバージョンの競合を解決します。ケーキの一片!

ありがとうございました。

0

あなたのPOMファイルにこの1を追加し、私は同じエラーがあったが、私はこれを行っている、今それは私の作品、

  <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>3.1.0.RC1</version> 
</dependency> 


    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>3.0.0.RELEASE</version> 
</dependency> 

注:私はPOMの親、およびPOMの子供を持って、 と子プロジェクトをテストしたいのですが、エラーが発生しました。 mvn test .... 私はこの事をしています。親で

バージョンと子なし。この1 ようorg.springframework 春豆

  <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
</dependency> 

はそれを試してみてください。

2

上記の解決策が機能しない場合は、eclipseのエラー: がEclipse、プロジェクト - >プロパティ - > javaビルドパス - > Librairies - > "Junit 4"の場合は削除してください。

私はこのスタックトレースを持っていた:POMを更新

java.lang.NoSuchMethodError: org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) 

そしてもちろんのは

+0

残念ながら、私はこれを行った後、まだエラーをremais ...任意の提案? – Johannes

+0

@Johannesプロジェクトをクリーン/ビルドし、それを閉じてからEclipseを閉じてから、もう一度開いてください。あなたは他の答えを試しましたか?主にこれは依存関係の問題であるため、解決済みかどうかを確認する必要があります。まだjunit 4を参照している別のプロジェクトに依存していないかどうかを確認してください。エラーがポップアップする箇所にブレークポイントを設定し、実際に使用されているjarを確認してください。 – Asoub

+0

これに継続してご関心をお寄せいただきありがとうございます。 私はPOMからすべての依存関係を削除し、IntelliJコンパイラの提案からMavenを使ってそれらを再追加し、これらの新しく追加されたクラスをJavaクラスにインポートすることで、この問題を解決することができました。 どういうわけか、この問題はこの方法で解決されました...ありがとう – Johannes

関連する問題