質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

20935閲覧

JUnit + Spring, 実行時エラー:Could not load CacheAwareContextLoaderDelegate

poyopi

総合スコア113

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2016/04/11 02:46

編集2016/04/11 05:15

SpringのDIコンテナを利用してJUnitのテストコードを書こうとしています。テスト実行したところ、java.lang.IllegalStateException: Could not load CacheAwareContextLoaderDelegate [class org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]のエラーが出て、これがわかりませんでしたのでご助力をお願い致します。

プロジェクトの構成は画像のようになっています:
project

テストコード、コンテキストファイルは下記です。

java

1package junit.tutorial; 2 3import org.junit.Test; 4import org.junit.runner.RunWith; 5import static org.junit.Assert.*; 6import static org.hamcrest.CoreMatchers.*; 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.test.context.ContextConfiguration; 9import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 10 11@RunWith(SpringJUnit4ClassRunner.class) 12@ContextConfiguration(locations="classpath:applicationContext-test.xml") 13public class CalculatorTest { 14 15 @Autowired 16 Calculator calc; 17 18 @Test 19 public void multiplyTest() { 20 //略 21 } 22 23}

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:beans="http://www.springframework.org/schema/beans" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 9 <context:annotation-config /> 10 <context:component-scan base-package="junit.tutorial" /> 11</beans>

フルスタックトレース:

err

1java.lang.IllegalStateException: Could not load CacheAwareContextLoaderDelegate [class org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate] 2 at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:102) 3 at org.springframework.test.context.BootstrapUtils.createBootstrapContext(BootstrapUtils.java:68) 4 at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:105) 5 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:154) 6 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:145) 7 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 8 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 9 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 10 at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 11 at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 12 at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 13 at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 14 at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 15 at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 16 at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 17 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 18 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 19 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 20 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 21 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 22 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 23 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 24Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; 25 at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:99) 26 ... 21 more

下記を参考にしています。
[Spring] Autowiredアノテーションを使っているクラスのユニットテスト - step by step
@ContextConfigurationでclasspathでファイル参照先を指定する - テックノート

必要な情報等あれば随時補足追記致します。よろしくお願い致します。


tkturboさんより頂いたご助言から、エラーの中のCaused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;でサーチしました。これまでbuild.gradleを下記のようにしていたので

gradle

1dependencies { 2 //spring関連のみ抜粋 3 compile 'org.springframework:spring:2.5.6.SEC03' 4 compile 'org.springframework:spring-context:4.2.5.RELEASE' 5 compile 'org.springframework:spring-core:4.2.5.RELEASE' 6 7 testCompile 'org.springframework:spring-test:4.2.5.RELEASE' 8}

下記のように改めました

gradle

1ext { 2 springVersion='4.0.5.RELEASE' 3} 4 5dependencies { 6 compile 'org.springframework:spring:2.5.6.SEC03' 7 compile "org.springframework:spring-context:$springVersion" 8 compile "org.springframework:spring-core:$springVersion" 9 testCompile "org.springframework:spring-test:$springVersion" 10}

すると先ほどまでのエラーの部分の文言が少し変わり、Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes(Ljava/lang/annotation/Annotation;ZZ)Lorg/springframework/core/annotation/AnnotationAttributes;これをみると

gradle

1compile 'org.springframework:spring:2.5.6.SEC03'

これが悪い気がしたので取り除きました。
例外を出さず動くようになりました。
参考:java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.isInJavaLangAnnotationPackage(Ljava/lang/annotation/Annotation;)Z - Stack Overflow

悪い気がしたのでという書き方の通り、各アーティファクトが何の役割のものか理解がないので、ドキュメンテーションを見て少しずつわかるようにしたいと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;

↑この部分に着目してキーワード検索するとこんなの↓が見つかりました。

junit4 - Spring JUnit Test Error - Stack Overflow

参考になれば。

投稿2016/04/11 04:08

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poyopi

2016/04/11 04:55

 エラーの着目点についてアドバイスありがとうございます。該当箇所にて自分でもいくつかstack overflowを見てみたところ、springのjarのバージョンに問題があるのではというところがわかりました。質問の方を編集して手順を記しておきます。  ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問