我们如何在 Java 中测试 Actor?

发布于 2024-11-06 09:30:49 字数 120 浏览 0 评论 0原文

到目前为止我唯一看到的是有人发布了测试 TypedActor 的示例。我认为没有办法通过 Junit 来测试 UntypedActor 吗? Akka 文档日益完善,但我没有看到提到测试。这真的很明显,我只是错过了一些东西吗?

The only thing I've seen so far is someone posting an example of testing a TypedActor. I take it there's no way of testing an UntypedActor through say Junit? Akka docs are getting better by the day, but I don't see testing mentioned. Is it really obvious and I'm just missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ら栖息 2024-11-13 09:30:50

您可能对我写的博客文章感兴趣: 使用 Mockito 和 FEST-Reflect 测试 AKKA Actor 我使用的示例基于 JUnit、Mockito 和 FEST-Reflect。让我知道这对您是否有用。

You might be interested in a blog post I've wrote: Testing AKKA actors with Mockito and FEST-Reflect The example I'm using is based on JUnit, Mockito, and FEST-Reflect. Let me know if that is useful to you.

电影里的梦 2024-11-13 09:30:49

要使用 JUnit 进行测试,您需要使用 JUnit 提供的工具,有关测试 Actor(Java 等效为 UntypedActor)的文档位于:http://akka.io/docs/akka/snapshot/scala/testing.html

For testing with JUnit you'll need to use the facilities provided by JUnit, the docs on testing Actor (Java equiv is UntypedActor) is here: http://akka.io/docs/akka/snapshot/scala/testing.html

肩上的翅膀 2024-11-13 09:30:49

至少在 1.3 和 2.0 版本以及 akka-testkit 库中是可能的。

您可以执行以下操作来设置您的 actor:

@Before
public void initActor() {
    actorSystem = ActorSystem.apply();
    actorRef = TestActorRef.apply(new AbstractFunction0() {

        @Override
        public Pi.Worker apply() {
            return new Pi.Worker();
        }

    }, actorSystem);
}

然后您可以使用 TestProbe 类来测试您的 actor(对于 1.3 版本,它略有不同):

@Test
public void calculatePiFor0() {
    TestProbe testProbe = TestProbe.apply(actorSystem);
    Pi.Work work = new Pi.Work(0, 0);        
    actorRef.tell(work, testProbe.ref());

    testProbe.expectMsgClass(Pi.Result.class);     
    TestActor.Message message = testProbe.lastMessage();
    Pi.Result resultMsg = (Pi.Result) message.msg();
    assertEquals(0.0, resultMsg.getValue(), 0.0000000001);
}

在我根据我的一些经验编写的博客文章中提供了更多信息:
http://fhopf.blogspot.com/2012/03 /testing-akka-actors-from-java.html

It is possible, at least with version 1.3 and 2.0 and the akka-testkit library.

You do something like this to setup your actor:

@Before
public void initActor() {
    actorSystem = ActorSystem.apply();
    actorRef = TestActorRef.apply(new AbstractFunction0() {

        @Override
        public Pi.Worker apply() {
            return new Pi.Worker();
        }

    }, actorSystem);
}

You can then use the TestProbe class to test your actor (for version 1.3 it is slightly different):

@Test
public void calculatePiFor0() {
    TestProbe testProbe = TestProbe.apply(actorSystem);
    Pi.Work work = new Pi.Work(0, 0);        
    actorRef.tell(work, testProbe.ref());

    testProbe.expectMsgClass(Pi.Result.class);     
    TestActor.Message message = testProbe.lastMessage();
    Pi.Result resultMsg = (Pi.Result) message.msg();
    assertEquals(0.0, resultMsg.getValue(), 0.0000000001);
}

There is more available in a blogpost I wrote on some of my experiences:
http://fhopf.blogspot.com/2012/03/testing-akka-actors-from-java.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文