gpt4 book ai didi

testng - 使用 TestNG 自动化功能测试?

转载 作者:行者123 更新时间:2023-12-01 12:50:04 26 4
gpt4 key购买 nike

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

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

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

为了测试整个链条,我想出了以下临时解决方案:

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

我使用一个简单的 shell 脚本执行此操作 - 这可以使用 TestNG 自动执行吗?

最佳答案

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

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

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

关于testng - 使用 TestNG 自动化功能测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com