我对一些测试课程感到绝望。我认为我可以缩小问题的范围,但是我没有解决它的想法。
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,仅更改执行顺序。
任何输入在这一点上将是不胜感激的,我觉得我的方向错了。我知道这是一个非常模糊的问题,我很乐意通过一些投入加以改进。
谢谢!