1
6
我将描述作为一个集成测试,您要做的是什么,并且超出了JUnit作为一个框架的范围(JUnit现在只是将其脚趾伸入多线程测试,多进程当然不在特性集中)。 当然,您可以使用JUnit来运行这样的测试,但它们实际上只限于一个运行者,其余的测试您必须自己完成。 其他人已经指出了这样一个事实,即您通常会模仿或以其他方式将人工构建的方法发送给消费者,并在“单元测试”级别测试生产者独立生产的产品。 就实际测试生产者和消费者之间的交互而言,一种方法是忘记进程间测试,并通过某种依赖注入在一个线程上测试它的进程内测试,在这种注入中,生产者通过某种伪造的方式发送消息,这种方式只将消息传递给消费者,而不在h下再进行任何操作。在线程方法调用中。 然而,您似乎想要测试一些可以在它上面使用实际的进程间内容(竞争条件等)发生的事情,这使得这更像是一个集成测试。 为了解决这个问题,您需要启动这个过程并等待它接受消息,然后您的测试将告诉生产者要创建什么消息,它将把它发送给消费者。然后你的测试会询问消费者它得到了什么(适当的延迟)。 这里的需要对我来说是非常迫切的。我将进行全面的自动化验收测试,并让它包含这一级别的集成。 |
2
3
你应该看看 XHarness 我相信这能满足你的需要。我在最近的一段时间里使用过它,当时它对我们的项目非常有用。 从它的页面:
|
3
1
|
4
1
您在第1点中所说的并不是真正的单元测试场景。在一个完美的单元测试中,您不会担心谁在生成消息,谁在消费消息。您的一个测试用例将集中于想象(或模拟)您从一个有效的生产者收到了不同的消息,并且您的测试用例将测试这些消息是如何被正确使用的。您所看到的更像是集成测试。不管怎样,我所作的一些陈述可能是主观的。您可以使用jmock、easymock框架来满足您的模拟需求。 |
5
1
这远远超出了单元测试,而且牢牢地包含在集成测试中。 我建议通过模拟每一块单独的comms层来测试您可以做什么。 在这种情况下,我过去所做的就是在测试中启动一个单独的线程,它启动一个模拟的接收器/发送器。然后在主测试中,我执行发送方/接收方部分。在实践中,这意味着要确保事情以正确的顺序开始会有很多延迟,而这会变得非常缓慢,所以您只需要这样做来测试拼图的各个部分是否合适,并尽可能少地对其进行功能测试。 在离开测试之前,我验证所需的行为并终止助手线程。 这可以测试很多。使用单独的进程(和主机)测试是一种真正的痛苦。这需要很长时间,我会把它限制在手动测试上。 |
Jamie M · 组合来自多个进程的数据 2 年前 |
Dinesh · 如果进程数超过内核数的一半,为什么性能会下降? 6 年前 |
cooke · python多处理使用特定参数串行运行 6 年前 |
SSV · 如何在Java中并行处理对象列表 6 年前 |
Vingtoft · 使用管道的Python多进程无阻塞内部通信 6 年前 |
cosz3 · Python多进程是否共享同一对象? 6 年前 |
Anish Shanbhag · 多处理事件不工作 6 年前 |