在为hive
dropwizard
应用编写测试时,我在尝试运行内存swagger
时遇到了一些麻烦。我尝试了hiverunner
和hiveqlunit
。
有两种类型的测试。一个用于使用dropwizard
集成测试来测试swagger
/ dropwizard
个API端点(这里不需要hive
),另一个是用于测试hive
集成的地方我需要点击api并设置一个内存hive
来查询和验证数据是否存储在hiveDB
(psql)中。
两个内存中hive
依赖项(请注意,我一次使用一个)始终与现有的dropwizard
和swagger
依赖项存在某种冲突。我猜这与jersey
有关,但我尝试了很多事情但仍然没有运气。
如果我没有点击hive
api,我可以在内存中CRUD
运行就好并执行所有dropwizard/swagger
。但我现在无法让这两项服务同时发挥作用。
Maven
中的版本:
io.dropwizard:dropwizard-core version: 0.9.2
com.smoketurner:dropwizard-swagger version: 0.9.2-3
com.facebook.presto.hive:hive-apache-jdbc version: 0.13.1-3
com.klarna:hiverunner version: 3.0.0
OR
org.finra.hiveqlunit:hiveQLUnit version: 1.0
dropwizard-swagger
使用org.reflections:reflections:jar:0.9.10
而com.klarna:hiverunner
使用org.reflections:reflections:jar:0.9.8
。
当我没有排除任何内容时,我得到以下内容:
java.lang.NoSuchMethodError: org.reflections.util.ClasspathHelper.forPackage(Ljava/lang/String;[Ljava/lang/ClassLoader;)Ljava/util/Collection;
所以我尝试从org.reflections:reflections
排除hiverunner
,我得到了3 Exceptions
:
java.lang.RuntimeException: javax.servlet.ServletException: io.dropwizard.jersey.setup.JerseyServletContainer-73437222@8a344094==io.dropwizard.jersey.setup.JerseyServletContainer,1,false
Caused by: A MultiException has 3 exceptions. They are:
1. java.lang.NullPointerException
2. java.lang.IllegalStateException: Unable to perform operation: method inject on com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
3. java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory
然后我尝试从org.reflections:reflections
中排除dropwizard-swagger
,并通过向org.reflections:reflections
添加以下依赖项为pom.xml
添加了单独的依赖项:
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
得到以下内容:
java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects
所以我添加了最新的guava
(版本20.0),然后它又给了我一个错误。这似乎是依赖地狱。
以前有没有人遇到过这个问题?似乎dropwizard
和hiverunner
不能很好地发挥作用。也许它与jersey
1&amp;的版本控制有关。 2。
我在jackson-databind
时遇到了一些其他错误,所以我做了一些研究,发现我必须为以下依赖项提供相同的版本:
com.fasterxml.jackson.core:jackson-databind (from `dropwizard`)
com.fasterxml.jackson.module:jackson-module-scala (from `hiverunner/hiveqlunit`)
现在我又回到了之前的3 Exceptions
...
任何帮助将不胜感激。
编辑: 发现hiveqlunit
正在使用以下内容:
com.sun.jersey:jersey-server:jar:1.9
在转移到以下maven
依赖项之前,这是最后一个版本之一:
org.glassfish.jersey.core:jersey-server
与dropwizard
org.glassfish.jersey.core:jersey-server:jar:2.22.
我该如何解决这个冲突?