2013-02-01 47 views
48

從Surefire 2.6升級到Surefire 2.13時,運行我的單元測試時得到TypeNotPresentExceptionProxyTypeNotPresentExceptionProxy

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653) 
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460) 
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69) 
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52) 
    at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070) 
    at java.lang.Class.getAnnotation(Class.java:3029) 
    at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.isValidJUnit4Test(JUnit4TestChecker.java:64) 

JUnit4TestChecker 64行看起來是這樣的:

Annotation runWithAnnotation = testClass.getAnnotation(runWith); 

所以神火考察@RunWith註釋,以確保它的類型是有效的。我們的測試使用Spring,所以@RunWith看起來像這樣在我們的測試類:

@RunWith(SpringJUnit4ClassRunner.class) 

好像神火沒有找到SpringJUnit4ClassRunner類。我不確定爲什麼在Surefire 2.6中,測試運行良好。

任何想法?

+1

聽起來像一個錯誤。如果還沒有人,請你可以創建一個[bug報告](http://jira.codehaus.org/browse/SUREFIRE)。 –

+1

感謝您的輸入。我會嘗試創建一個新的,更簡單的項目來演示相同的問題。然後打開一個錯誤報告。 – gangsta

+5

你檢查了更新版本的原因在此期間,我們在2.18.1? – khmarbaise

回答

2

運行mvn依賴性:解決

排除的JUnit的任何3.x版可以在已經悄悄

確保沒有TestNG的依賴關係,如果有,將加載TestNG的註釋,而不是。你需要的JUnit。