2016-04-27 27 views
0

Java設定クラスを持つSpring(4.2.5)プロジェクトがあります。これらは正常にプロジェクトを実行しているときに動作しますが、私のテストを動作させることはできません。下のテストでは、repoはnullです。 Spring junitテストが動作しない

@ContextConfiguration(classes = { HibernateConfiguration.class }) 
public class TestTest { 

    @Autowired 
    private InstituteRepository repo; 

    //some test 
} 

私は@RunWith(SpringJUnit4ClassRunner.class)注釈を追加した場合、私はすべてのヘルプは高く評価された例外

java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotationAttributes(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/String;ZZ)Lorg/springframework/core/annotation/AnnotationAttributes; 
    at org.springframework.test.util.MetaAnnotationUtils$AnnotationDescriptor.<init>(MetaAnnotationUtils.java:290) 
    at org.springframework.test.util.MetaAnnotationUtils$UntypedAnnotationDescriptor.<init>(MetaAnnotationUtils.java:365) 
    at org.springframework.test.util.MetaAnnotationUtils$UntypedAnnotationDescriptor.<init>(MetaAnnotationUtils.java:360) 
    at org.springframework.test.util.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:191) 
    at org.springframework.test.util.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:166) 
    at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:274) 
    at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildTestContext(AbstractTestContextBootstrapper.java:110) 
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:120) 
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:105) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:154) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:145) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
    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:33) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

を取得します。

[EDIT]

私は4.1.3にspringframeworkのdependecyバージョンを変更した場合、テスト作品。 4.2.5では別の設定が必要ですか? HibernateConfigurationは、アクティブプロファイルに基づいて選択されるDataSourcePropertiesHSQLConfigurationMySQLConfigurationの両方で定義されている以下

@Configuration 
@EnableTransactionManagement 
@ComponentScan(basePackages = { "myapp.services" }) 
@EnableJpaRepositories("myapp.repositories") 
@Import({ HSQLConfiguration.class, MySQLConfiguration.class }) 
public class HibernateConfiguration { 
} 

、です。

[EDIT 2]

よりは、私がthis issueを見つけ、私の依存関係を確認した後に、私がMavenの依存関係の下で春コア-4.1.9を持っていたと私は私の中で依存関係に含まれていなかった登場グーグル後POM。依存関係を追加した後、私はMavenの依存関係の下のjarファイルを参照してください、私は、ビルド・パス・エラーを取得:これは私のPOMファイル

<dependencies> 
    <!-- spring data --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>${springframework.data.version}</version> 
    </dependency> 
    <!-- spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <!-- annotations --> 
    <dependency> 
     <groupId>javax.annotation</groupId> 
     <artifactId>jsr250-api</artifactId> 
     <version>1.0</version> 
    </dependency> 
    <!-- spring dep --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <!-- mysql --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>${mysql.connector.version}</version> 
    </dependency> 
    <!-- hsql --> 
    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>${hsqldb.version}</version> 
    </dependency> 
    <!-- test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <!-- I added this dependency --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
</dependencies> 

は、次のプロパティを持つ

Project 'myapp' is missing required library: 'C:\Users\user\.m2\repository\org\springframework\spring-core\4.1.9.RELEASE\spring-core-4.1.9.RELEASE.jar' 

です

<properties> 
    <project.version>0.1</project.version> 
    <junit.version>4.12</junit.version> 
    <springframework.version>4.2.5.RELEASE</springframework.version> 
    <springframework.data.version>1.10.1.RELEASE</springframework.data.version> 
    <hibernate.version>5.1.0.Final</hibernate.version> 
    <mysql.connector.version>5.1.31</mysql.connector.version> 
    <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName> 
    <hsqldb.version>2.3.2</hsqldb.version> 
</properties> 

ビルドパスの問題はEclipse関連で、コマンドliから実行されているようですテストはうまくいきます!プロジェクトのプロジェクト - >クリーン右クリック:問題が日食にある場合、あなたがやってそれを修正します

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = { HibernateConfiguration.class }) 
public class TestTest { 

    @Autowired 
    private InstituteRepository repo; 

    //some test 
} 
+0

あなたです'HibernateConfiguration'クラス内で宣言された' dataSource'ビーン? –

+0

私はその間違いを修正しましたが、Spring 4.2.5はまだ動作しません – user3388744

+0

maven依存関係ツリーを添付できますか?問題がhttp://stackoverflow.com/questions/23789271/java-lang-nosuchmethoderror-org-springframework-core-annotation-annotututils – ilopezluna

答えて

0

@Runwithのアノテーションを使用してみてくださいMaven->アップデートの依存関係を

+0

これは、まず最初に、spring-coreの依存バージョンが間違っているために発生したエラーです – user3388744

関連する問題