使用TestNG自动化功能测试?

使用TestNG自动化功能测试?,testng,functional-testing,Testng,Functional Testing,如何使用TestNG自动化一个功能测试,跨越多个Java进程 我对尝试TestNG而不是JUnit很感兴趣,因为它声称不仅仅是为单元测试而设计的,但是我还没有找到一个具体的例子来说明如何做到这一点 我有一个Java程序(p1),它监听来自某些特殊硬件的事件。它解析这些命令并将它们发送给另一个Java进程(p2),后者根据这些命令执行操作 为了测试整个链,我设法提出了以下临时解决方案: 我有一个文本文件,其中有一个“假”硬件命令列表 我在p1中添加了一个mock,它读取文本文件而不是侦听事件 我执

如何使用TestNG自动化一个功能测试,跨越多个Java进程

我对尝试TestNG而不是JUnit很感兴趣,因为它声称不仅仅是为单元测试而设计的,但是我还没有找到一个具体的例子来说明如何做到这一点

我有一个Java程序(p1),它监听来自某些特殊硬件的事件。它解析这些命令并将它们发送给另一个Java进程(p2),后者根据这些命令执行操作

为了测试整个链,我设法提出了以下临时解决方案:

  • 我有一个文本文件,其中有一个“假”硬件命令列表
  • 我在p1中添加了一个mock,它读取文本文件而不是侦听事件
  • 我执行p1(p2已经在测试环境中运行)
  • 我比较p2的日志输出,以验证它是否与列表中的命令匹配

  • 我使用一个简单的shell脚本来实现这一点——这可以通过TestNG实现自动化吗?

    是的,您可以使用TestNG轻松地自动化多个脚本

    TestNG支持数据驱动测试;i、 e.在一个方法中提供所有数据,该方法传递给测试方法以执行检查(断言)。所有这些都是通过注释实现的,所以您不需要为此编写任何代码

    我建议您像Eclipse一样使用IDE(如果您还没有使用的话),并且Eclipse有可用的插件。通过日食;编写测试用例及其自动化变得非常容易。我会建议你去谷歌;你会找到足够的例子


    JUnit4也同样不错。

    您得到的是一个跨多个进程的执行环境。这意味着您的测试环境必须能够根据需要自动创建这些流程。基本流程是标准的:设置、多个测试、拆卸。不过,设置和拆卸例程需要启动和停止进程、初始化输入、提供特定于测试的环境参数等

    从您所描述的内容来看,程序
    p1
    是否使用Java似乎并不重要。您可以使用
    java.lang.Runtime
    执行
    p1
    。您已经预料到需要模拟硬件行为,因此我假设您已经知道如何在适当的集成测试模式下运行
    p1
    。如果出于某种原因,您需要
    运行时
    为您提供的更多功能,请查看调试和检测界面

    根据您想要或需要进行测试的方式,在为每个测试用例启动流程时,您可能会遇到性能问题。在这种情况下,对于一组测试,您需要一个进程。在这种情况下,您正在重用一个资产,这个资产可能会失败,因为它毕竟是一个测试环境。因此,您希望在每个测试开始时检查流程是否正在运行。确保这一点的一种方法是将检查放在工厂方法中,该方法将被测试的主要对象提供给测试用例。类
    java.lang.Process
    不直接允许这种情况发生,但它确实为流程提供了标准的输入/输出。如果可以,在该通道上实现一个简单的“ping”接口就足够了。其他类型的共享资源也可以工作