问题标签 [akka-testkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
122 浏览

tdd - 观察演员终止时的测试行为不一致

当我编写涉及订阅 Eventstream 上的事件或观看演员并列出“终止”的测试时,测试可以正常运行它们 1 接 1 但是当我运行整个测试套件时,这些测试会失败。如果这些测试中的每一个都在 Xunit 的单独测试类中,测试也可以工作。

怎么来的?

带有这些测试的回购:https ://github.com/Lejdholt/AkkaTestError

0 投票
1 回答
384 浏览

akka - 如何在 Akka 多节点测试中重启节点?

我想做一些 Akka 多节点测试,并在达到某个障碍时重新启动一个节点。就像是:

这是不能做到的吗,至少需要一种能够关闭nodeB并使用相同的akka​​.remote.netty.tcp.port启动另一个nodeC的方法(这是绝对必要的)。像这样的东西

问题可以恢复为:

我们可以重现一个节点崩溃然后重新启动的情况吗?

  1. 我们可以重启一个节点吗?
  2. 如果没有,我们可以在其余节点达到 berrier 时启动一个节点吗?
  3. 我们能否将相同的 akka.remote.netty.tcp.port 分配给不同的节点(不应并行运行)。我试过*.opts文件但没有成功,是这样吗?
0 投票
1 回答
527 浏览

akka.net - 如何使用 Akka.net 中的 TestKit 测试 DistributedPubSub?

我正在对使用集群工具的参与者进行单元测试DistributedPubSub。对于测试,我使用的是 Akka.net 的 TestKit。

显然,在 TestKit 中,系统参与者Sys没有该DistributedPubSub工具,并且在访问它时会引发 Null 指针异常。

这是当 Actor 被创建为 Sys 的子级时失败的代码:

有没有办法模拟它或创建一个演员探针来使用它Sys

0 投票
1 回答
827 浏览

akka - 如何使用 akka-http-testkit 创建测试?

我正在尝试使用akka.http.scaladsl.testkit.ScalatestRouteTest创建一个简单的测试,结果是:

更新堆栈跟踪

构建.sbt

我能看到的是RequestContextImpl需要一个RequestContext

但是 RequestContext 是一个类而不是特征

知道如何解决这个问题吗?

0 投票
0 回答
256 浏览

scala - 用户/演员未收到来自系统/TestActor Akka TestKit 的消息

我有一个简单的 scala 类 CartService ,它创建一个演员并向其发送一些消息,然后演员通过 sender 向服务发回响应!结果演员代码

和服务代码

现在我正在为创建服务对象并调用将消息发送给参与者的服务方法的服务编写测试用例

但这次等待超时,我收到一条消息

[信息] [12/28/2016 16:07:10.441] [System-akka.actor.default-dispatcher-7] [akka://System/user/fd38f1b1-6f03-4997-8625-0ce7e0ef2626] 消息 [演员.GetCartUniqueSkuCountCmd] 从 Actor[akka://System/temp/$a] 到 Actor[akka://System/user/fd38f1b1-6f03-4997-8625-0ce7e0ef2626#279696660] 未交付。[2] 遇到死信。可以使用配置设置“akka.log-dead-letters”和“akka.log-dead-letters-during-shutdown”关闭或调整此日志记录。

通过一些谷歌搜索,我了解到这与发件人被关闭有关,但我无法解决这个问题。任何输入表示赞赏。

这是堆栈跟踪:

java.util.concurrent.TimeoutException:在 scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) 的 [15 秒] 之后,在 scala.concurrent.impl.Promise$DefaultPromise.result(Promise. scala:223) 在 scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) 在

scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) at scala.concurrent.Await$.result(package.scala:190) at services.CartService.getCartUniqueSkuCount(CartService.scala:103) at CartActorSpec$$ anonfun$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(CartActorSpec.scala:48) 在 CartActorSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(CartActorSpec.scala:44)在 CartActorSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(CartActorSpec.scala:44) 在 org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)在 org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) 在 org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 在 org.scalatest.Transformer.apply(Transformer.scala:22) 在 org .scalatest.Transformer.apply(Transformer.scala:20) 在 org.scalatest。WordSpecLike$$anon$1.apply(WordSpecLike.scala:953) at org.scalatest.Suite$class.withFixture(Suite.scala:1122) at CartActorSpec.withFixture(CartActorSpec.scala:19) at org.scalatest.WordSpecLike$class .invokeWithFixture$1(WordSpecLike.scala:950) at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962) at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala: 962) at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306) at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:962) at CartActorSpec.runTest(CartActorSpec.scala:19) at org.scalatest。 WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021) at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1 .apply(Engine.scala:413) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401) at scala.collection.immutable.List.foreach(List.scala:381) at org. scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401) at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:390) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply (Engine.scala:427) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401) at scala.collection.immutable.List.foreach(List.scala:381) at org.scalatest .SuperEngine.traverseSubNodes$1(Engine.scala:401) at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396) at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483) at org.scalatest.WordSpecLike$class。runTests(WordSpecLike.scala:1021) at CartActorSpec.runTests(CartActorSpec.scala:19) at org.scalatest.Suite$class.run(Suite.scala:1424) at CartActorSpec.org$scalatest$WordSpecLike$$super$run( CartActorSpec.scala:19) at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) at org .scalatest.SuperEngine.runImpl(Engine.scala:545) at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067) at CartActorSpec.org$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19)在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) 在 org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) 在 CartActorSpec.run(CartActorSpec.scala:19)1021) 在 CartActorSpec.runTests(CartActorSpec.scala:19) 在 CartActorSpec.org$scalatest$WordSpecLike$$super$run(CartActorSpec.scala:19)在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine.runImpl (Engine.scala:545) at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067) at CartActorSpec.org$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) at org.scalatest.BeforeAndAfterAll $class.liftedTree1$1(BeforeAndAfterAll.scala:257) at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) at CartActorSpec.run(CartActorSpec.scala:19)1021) 在 CartActorSpec.runTests(CartActorSpec.scala:19) 在 CartActorSpec.org$scalatest$WordSpecLike$$super$run(CartActorSpec.scala:19)在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine.runImpl (Engine.scala:545) at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067) at CartActorSpec.org$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) at org.scalatest.BeforeAndAfterAll $class.liftedTree1$1(BeforeAndAfterAll.scala:257) at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) at CartActorSpec.run(CartActorSpec.scala:19)scalatest.Suite$class.run(Suite.scala:1424) at CartActorSpec.org$scalatest$WordSpecLike$$super$run(CartActorSpec.scala:19) at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike .scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine.runImpl(Engine.scala:545) 在 org.scalatest.WordSpecLike$class。在 CartActorSpec.org 运行(WordSpecLike.scala:1067)$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) 在 org.scalatest .BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) 在 CartActorSpec.run(CartActorSpec.scala:19)scalatest.Suite$class.run(Suite.scala:1424) at CartActorSpec.org$scalatest$WordSpecLike$$super$run(CartActorSpec.scala:19) at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike .scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine.runImpl(Engine.scala:545) 在 org.scalatest.WordSpecLike$class。在 CartActorSpec.org 运行(WordSpecLike.scala:1067)$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) 在 org.scalatest .BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) 在 CartActorSpec.run(CartActorSpec.scala:19)19) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine .runImpl(Engine.scala:545) at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067) at CartActorSpec.org$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) at org.scalatest .BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) at CartActorSpec.run(CartActorSpec.scala:19)19) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067) 在 org.scalatest.SuperEngine .runImpl(Engine.scala:545) at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067) at CartActorSpec.org$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) at org.scalatest .BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) at CartActorSpec.run(CartActorSpec.scala:19)在 CartActorSpec.org 运行(WordSpecLike.scala:1067)$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) 在 org.scalatest .BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) 在 CartActorSpec.run(CartActorSpec.scala:19)在 CartActorSpec.org 运行(WordSpecLike.scala:1067)$scalatest$BeforeAndAfterAll$$super$run(CartActorSpec.scala:19) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257) 在 org.scalatest .BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256) 在 CartActorSpec.run(CartActorSpec.scala:19)

PS 我的测试课确实有 ImplictSender 特质

0 投票
0 回答
303 浏览

java - 使用应用方法测试 Akka Persistent FSM Actor

我正在尝试使用其 Java api 在 AKKA 中开发 FSM 模型。我希望对这个功能进行单元测试。我已经经历了许多关于单元测试具有 lambda 支持的 Akka FSM 演员的示例,但我找不到任何相关示例来测试相同的.applying.andthen方法,因此我可以确定测试涵盖了自定义处理从 DomainEventB 的参数派生的逻辑。

任何最好使用 Java 的帮助/资源将不胜感激。

0 投票
0 回答
373 浏览

scala - 如何测试 Actor 是否能够接收到消息?

我有以下 Actor 接收两条消息:

我想测试演员是否能够接收到消息“你好”和“世界”。我看到的例子不符合这个要求。

这里和这里那个让演员发回一条消息并使用 expectMsg() 他们检查响应。但我的要求是查看 Actor 是否能够接收到消息,而不是查看 Actor 是否能够以特定消息回复。

此处的示例更改了参与者的状态,他们检查状态以查看参与者是否能够接收消息。再次,不是我想要的。

那么,我如何测试我的演员是否能够通过 TestKit 处理这两条消息?

0 投票
1 回答
844 浏览

java - java中使用EventFilter测试日志消息的例子

我找不到一个有效的 Java 示例来说明如何使用 Akka TestKit 中提供的 EventFilter 功能。我想断言某些内容已被记录,并且在搜索时我到达了文档中的这个链接:http: //doc.akka.io/docs/akka/current/java/testing.html#Expecting_Log_Messages

据我所知,示例代码已过时或未编译。

Scala 中的示例不是问题。我也了解应该如何使用 EventListener。我只是不知道如何在 Java 中使用它

0 投票
0 回答
140 浏览

maven - Maven Scalatest 插件未触发 Akka 测试

我的 Akka & Akka Http 应用程序的单元测试在执行“mvn 测试”时无法触发。

我在Scalatest Maven Plugin "no tests were executed"上发现了一个类似的问题,并尝试了那里提到的解决方案,但对我来说没有运气。

项目配置:Java:1.8 Scala:2.11.8 Akka:2.4.17 Akka http:10.0.3 scalatest:3.0.1 mvn:3.3.9

pom.xml :

0 投票
1 回答
93 浏览

scala - Akka TestKit 探针的严格模式

我正在为基于参与者的应用程序编写测试用例。其中一个组件可以大致定义如下:

现在,写一个我正在使用的测试用例akka-testkitand TestProbe。测试用例的一个重要部分如下所示:

现在的问题是测试用例通过了,即使发送到的消息b不是预期的,因此也没有经过验证。

我知道我可以b.expectNoMsg()在测试用例的开头调用它来解决这个特定问题,但不知何故我相信这不是一个真正可扩展的方法(我必须在所有预期的调用之后每次都添加它,这相当麻烦)。

所以我的问题是:是否可以选择akka-testkit在严格模式下运行,以便每条消息都必须以某种方式预期?首选方法是 via或配置TestKit,但任何不需要修改每个测试用例的解决方案都可以(因此在每次通信结束时调用不是解决方案)ActorSystemTestProbeexpectNoMsg()