Spring MVC, TestNG, Akka -异常不会冒泡到测试框架,导致测试失败



我有一个内部使用Akka的Spring MVC应用程序。其中一个参与者正在调用使用MockRestServiceServer模拟的REST服务。当我运行调用控制器和感兴趣的参与者的测试时,即使内部抛出异常,测试也通过了。

我在日志中看到以下异常堆栈跟踪。在测试用例中,我还在验证模拟服务器(mockRestServiceServer.verify())之前放入了Thread.sleep(5000)。我想知道为什么这个异常没有被抛出到TestNG框架并且测试失败。

任何指针或如何解决这个问题将是最感激的!谢谢!

java.lang.AssertionError: Request content expected:<"{"GET":{"user":["some user id"]}}""> but was:<{"GET":{"user":["some user id"]}}">
at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:60) ~[spring-test-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:89) ~[spring-test-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.test.web.client.match.ContentRequestMatchers$3.match(ContentRequestMatchers.java:94) ~[spring-test-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.test.web.client.RequestMatcherClientHttpRequest.executeInternal(RequestMatcherClientHttpRequest.java:71) ~[spring-test-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.mock.http.client.MockClientHttpRequest.execute(MockClientHttpRequest.java:90) ~[spring-test-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:484) ~[spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:461) ~[spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:410) ~[spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at com.some.company.akka.actor.adr.service.AdvDataRepoService.generateAndExecuteHttpRequest(AdvDataRepoService.java:118) ~[classes/:na]
at com.some.company.akka.actor.adr.service.AdvDataRepoService.updatePermissions(AdvDataRepoService.java:57) ~[classes/:na]
at com.some.company.akka.actor.adr.AdvDataRepoServiceActor.onReceive(AdvDataRepoServiceActor.java:35) ~[classes/:na]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167) ~[akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467) ~[akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97) ~[akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:491) [akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.actor.ActorCell.invoke(ActorCell.scala:462) [akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) [akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.dispatch.Mailbox.run(Mailbox.scala:219) [akka-actor_2.10-2.3-M2.jar:2.3-M2]
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:385) [akka-actor_2.10-2.3-M2.jar:2.3-M2]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.10.3.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.10.3.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.10.3.jar:na]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.10.3.jar:na]

actor是异步执行的,在一个不同的线程上,然后从你发送消息给它们。因此,您无法在发送代码中捕获这些异常。这是经过设计的:唯一获得例外的人是演员的主管。

最新更新