使用spring-boot-starter-test 1.4 snapshot

时间:2016-07-01 18:59:55

标签: spring spring-boot

我试图在spring-boot-starter-test 1.4中使用新的@JsonTest注释,并且我得到了一个奇怪的错误。看起来@JsonTest注释依赖于一个没有添加到类路径的类。这是我的考试......

@RunWith(SpringJUnit4ClassRunner.class)
@JsonTest
public class JsonSerializationTest {
...
}

这就是错误:

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)

如果删除@JsonTest注释,我会收到此错误,因为没有设置ApplicationContext:

Caused by: java.lang.IllegalArgumentException: Cannot load an ApplicationContext with a NULL 'contextLoader'.

任何人都知道@JsonTest试图加载的类是什么类型的spring-boot并不包含在依赖项中?

1 个答案:

答案 0 :(得分:1)

两个缺少的类是Spring Boot 1.4中的新类,所以看起来你在类路径上有多个版本。您需要更新pom或build.gradle以确保版本一致。最简单的方法是删除任何版本声明,并允许Spring Boot的依赖管理为您处理它。