Java “的框架或工具”;分布式单元测试“;?

Java “的框架或工具”;分布式单元测试“;?,java,unit-testing,distributed-system,Java,Unit Testing,Distributed System,是否有任何工具或框架能够使测试用Java编写的分布式软件变得更容易?我正在测试的系统是一个点对点软件,我想用Java而不是.Net来执行测试 正在测试的系统是我为构建P2P应用程序而开发的一个框架。它用作较低的子系统,试图隐藏它的一些复杂性。它目前是一个学术项目,所以我现在追求简单 在我的测试中,我想证明一个对等方(在它自己的进程中运行,可能有多个线程)可以发现另一个(在另一个进程或甚至另一台机器上运行),并且它们可以交换一些消息。我不使用mock或stub,因为我需要看到双方同时工作。我意识到

是否有任何工具或框架能够使测试用Java编写的分布式软件变得更容易?我正在测试的系统是一个点对点软件,我想用Java而不是.Net来执行测试

正在测试的系统是我为构建P2P应用程序而开发的一个框架。它用作较低的子系统,试图隐藏它的一些复杂性。它目前是一个学术项目,所以我现在追求简单

在我的测试中,我想证明一个对等方(在它自己的进程中运行,可能有多个线程)可以发现另一个(在另一个进程或甚至另一台机器上运行),并且它们可以交换一些消息。我不使用mock或stub,因为我需要看到双方同时工作。我意识到需要某种协调机制,PNUnit似乎能够做到这一点


我遇到了一些倡议,如“旨在提供一个扩展JUnit的分布式测试环境,使开发人员/测试人员能够运行远程JUnit,并创建由几个并行或串行运行的远程JUnit测试组成的复杂测试套件”,但是这个项目和我发现的其他一些项目似乎早已过时。

测试分布式软件在很大程度上取决于它是什么类型的软件,因此为了获得完整的答案,我需要知道您的软件的功能。然而,从PNUnit来看,它所做的大部分工作是允许同步、排序和并行执行测试。还支持此功能,例如,您可以执行以下操作:

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
public void testServer() {
   :
}
它将从三个不同的线程调用函数testServer十次。TestNG 4.5的更改日志也暗示了运行远程测试的可能性,更多信息可以在博客文章中找到


或者,您可以检查IBM的软件以测试并行和分布式软件(有一个关于如何使用它的详细描述)。我已经成功地使用它来暴露并发应用程序中的错误

有一种方法非常简单,不需要学习任何新的框架。您可以使用grep4j跨分布式环境测试应用程序生成的日志。
查看并获取更多信息。

嗯。。。我不会称之为单元测试。我将其称为功能测试或性能/负载测试的系统或集成测试。是的,我倾向于同意你的看法,Stephen。在我的例子中,这不是性能(负载、压力,你可以说)测试,因为测试的目的是显示系统的各个部分按计划工作。例如,每个组件都应该能够发现其他组件、发送和应答消息等。因此,我认为这更像是一个功能测试,甚至是一个小型集成测试,因为它关注的是涉及一对对等方的一些交互。请参阅上面的补充说明,了解有关该软件的更多详细信息,并感谢您的关注。Lars,非常感谢您的关注。我增加了对软件的描述。请告诉我,如果你需要更多的细节来更好地解决它。在这种特殊情况下,我认为PNUnit比TestNG更能满足我的需求(不幸的是,我不想使用Java以外的其他平台,因此PNUnit对我来说是不可能的),但事实是我对TestNG和JUnit都不了解。我会多加注意的,但恐怕我在这条死胡同里。。。