2016-08-25 1 views
3

私はSpringプロジェクトをセットアップしましたが、次のテストを実行するときに例外が発生しました。

package com.company.app; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

import static org.junit.Assert.assertEquals; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"classpath:spring/spring-config.xml"}) 
public class CheckTest { 

    @Test 
    public void test_foo() { 
     assertEquals(0, 1); 
    } 
} 

例外は次のとおりです。

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/Assume$AssumptionViolatedException 
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:281) 
    at org.springframework.test.context.junit4.SpringMethodRoadie$2.run(SpringMethodRoadie.java:207) 
    at org.springframework.test.context.junit4.SpringMethodRoadie.runBeforesThenTestThenAfters(SpringMethodRoadie.java:254) 
    at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:234) 
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:204) 
    at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:146) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:151) 
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:59) 
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:52) 
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:50) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84) 
    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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 22 more 

私はAssumptionViolatedExceptionorg.junit.AssumptionViolatedExceptionの代わりに、org.junit.Assumeに位置していたことが判明、私は多分、これは例外がスローされた理由だと思います。

しかし、私は、次の注釈行を削除した場合、それがうまく動作するでしょう

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"classpath:spring/spring-config.xml"}) 

出力は次のようになります。

java.lang.AssertionError: 
Expected :0 
Actual :1 
私は、インターネットから得た

ほとんどの答えは、私はJUnitのを使用する必要があることを私に言った より高いバージョンのスプリングテストしかし、私は両方のために最高のバージョンを使用していると思う。

junit: 4.12 
spring-test: 4.3.2.RELEASE 

私はそれを動作させるために何かすべきことはありますか?それともバグですか?

+1

は、使用している実際のバージョンではありません。あなたの依存関係を確認してください... –

答えて

3

実際にはではありません。spring-test 4.3.2です。

あなたのクラスパスにバージョンspring-testがあります。

SpringMethodRoadieがJUnit 4.4のサポートのためにSpring 2.5に導入されました。正しくリコールすれば、JUnit 4.5へのアップグレードでSpring 3.0でSpringMethodRoadieが削除されました。

解決策は、適切なバージョンのspring-testを使用するようにビルドまたはIDEを構成することです。エラーによってあなたが使用していると思うのJUnitのバージョンを判断

よろしく、

サム(春TestContextフレームワークの著者)

+0

'pom.xml'に2つの' spring-test'の依存関係を追加し、古いものを使用しました。古い依存関係を削除した後に動作しました。ありがとうございます。 – Searene

関連する問題