如何正确拆除Junit测试规则(DropwizardAppRule)

时间:2018-07-25 15:23:52

标签: java junit jersey dropwizard

我对一些测试课程感到绝望。我认为我可以缩小问题的范围,但是我没有解决它的想法。

  

TLDR::如何正确拆除DropwizardAppRule实例   以便在另一个类中使用另一个?
  还是可以强制已配置的捆绑软件从规则中刷新?


要测试应用程序的两种不同配置(配置的捆绑软件根据配置文件的不同而稍有变化),我在测试中实例化了具有不同配置文件的两个DropwizardAppRule。如果单独运行,则测试运行良好,但是如果未按“正确”顺序依次运行,则会出现错误。 该错误看起来像是一个副作用,我想我无法使用其他配置彻底重启DropwizardAppRule
首先,我使定制规则扩展了第一个规则,然后实现了实现TestRule的单独规则(都实例化了DropwizardAppRule),我尝试使用JUnit @After,尝试添加后继规则,tried closing stuff in the life-cycle ...直到我用尽了所有想法。 / p>

我终于回到规则彼此扩展:CockpitLdapApplicationRule扩展CockpitApplicationRule并通过将Ldap测试放在以“ z”开头的包中并设置maven以按字母顺序运行测试的方式来解决。

如果有人想看一下,我创建了a branch

错误:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/html;charset=iso-8859-1, type=class org.ow2.petals.cockpit.server.resources.UserSession$CurrentUser, genericType=class org.ow2.petals.cockpit.server.resources.UserSession$CurrentUser.
 at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:231)
 at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:155)
 at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1085)
 at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
 at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:808)
 at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:326)
 at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:115)
 at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
 at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
 at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
 at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:419)
 at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:267)
 at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:112)
 at org.ow2.petals.cockpit.server.security.UserSessionTest.testLogout(UserSessionTest.java:70)

我正在使用Dropwizard 1.1.4。

要重现:测试套件that fails和另一个that succeeds,仅更改执行顺序。

任何输入在这一点上将是不胜感激的,我觉得我的方向错了。我知道这是一个非常模糊的问题,我很乐意通过一些投入加以改进。

谢谢!

0 个答案:

没有答案