Java 测试应用服务器响应

Java 测试应用服务器响应,java,unit-testing,open-source,continuous-integration,Java,Unit Testing,Open Source,Continuous Integration,我的应用程序有两个完全分离的应用程序服务器。 例如,他们以不同的方式相互交谈。 A将文件放入文件夹中 B听并读取文件,在新文件夹中创建响应文件 A拾取“响应”文件 JMS也是这样: 出版某物 B将倾听并回答 现在,我只想用应用程序A来测试这一点,这样我就有了某种模拟B的动态存根,当我真正的应用程序A创建文件或主题时,它会被触发 有任何framworks可以支持这一点吗 我看到了Mactor,但它看起来像一个死项目,还有其他建议吗?您应该能够基于B的真实代码为B创建一个模拟服务器。我将使用它来创建

我的应用程序有两个完全分离的应用程序服务器。 例如,他们以不同的方式相互交谈。 A将文件放入文件夹中 B听并读取文件,在新文件夹中创建响应文件 A拾取“响应”文件

JMS也是这样: 出版某物 B将倾听并回答

现在,我只想用应用程序A来测试这一点,这样我就有了某种模拟B的动态存根,当我真正的应用程序A创建文件或主题时,它会被触发

有任何framworks可以支持这一点吗


我看到了Mactor,但它看起来像一个死项目,还有其他建议吗?

您应该能够基于B的真实代码为B创建一个模拟服务器。我将使用它来创建模拟实例以进行测试。

为了解决此要求,为了与外部系统进行相对良好的集成测试,我们无法控制。我们用的是Jmeter。
Jmeter能够监听JMS资源,等待请求并对其执行操作,我们使用了一组存根以这种方式表示实际系统的逻辑。

我不确定您为什么需要一个框架。您需要能够从JUnit(或其他)测试中驱动文件和JMS,但这只是一个简单的编码问题

然后,您可以编写执行以下操作的测试:

  • 在用户的输入目录中创建文件
  • 等待文件出现在a的输出目录中
  • 验证文件的内容
  • 对于更复杂的一系列交互,只需使用更多的操作-等待-验证周期来扩展序列


    也许您认为您需要一个框架,该框架可以对来自某个应用程序的不同事件作出反应,这样您就不需要显式地写出交互序列。我认为这是个坏主意。测试应该是一个明确的序列,这样就可以清楚地知道它在做什么。

    您会模拟文件系统吗?正确。我想要某种模拟器引擎来复制B所做的复杂工作,然后考虑在M中调用文件系统访问。是的,但是因为在应用程序A中,发送文件的流程和从App B接收文件的流程被断开,Idealy,我想一起模拟B,而不是专门模拟流的这一部分或另一部分。因此,这是更高级别的端到端测试,而不是单元测试。为了便于管理,您应该重新考虑在真实A和模拟非A之间进行切换的位置。似乎您希望在实时文件系统中使用模拟B。我建议使用一个模拟文件系统+B。这并不总是可能的,这就是为什么我想要一些模拟B的动态存根。你可以运行一个精简版本,可能在与a相同的主机或另一个免费主机上,而不是运行一个完整的B实例。否。它属于第二家公司,我对此没有控制权。