gpt4 book ai didi

java - 从 IDE 中在远程服务器上运行 TestNG/JUnit 集成测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:08 24 4
gpt4 key购买 nike

在我的 IDE(Eclipse 或 NetBeans,无关紧要)中,我有一些 TestNG 测试类(但我的问题还涉及远程 JUnit 测试),它们是集成测试。这些测试需要一个集成服务器来运行,它们不能在本地机器上运行。他们需要集成服务器的完整环境——不仅是 JavaEE 容器相关的东西(=> 没有 Arquillian 也没有 JEEUnit)。

现在我希望能够从我的 IDE (Eclipse) 中运行这些测试 - 最好使用 TestNG 插件 - 但当我启动它们时,它们实际上应该在远程集成服务器上运行。

是否可以从我的 IDE 中在远程服务器上启动集成测试?我喜欢在远程服务器上有某种代理等待测试请求并执行它们的想法。但正如我所说,如果它从 TestNG 插件内部运行就更好了。

我是否需要某种解决方法,例如 Ant 脚本(希望不需要)或一些 Maven 魔法?最佳做法是什么?

我知道我还可以为我的应用程序创建 Web 服务,然后我可以从本地单元测试中调用它们。但我想知道没有 Web 服务是否也有可能。

最佳答案

如何实现这一点在很大程度上取决于您使用的集成服务器和 IDE,以及您的应用程序是什么。我假设您使用的是 Eclipse;我假设你使用的是 Jenkins ,因为 IMO 是最容易让它做你想做的事。

大部分都可以开箱即用。但是,有一点需要一些额外的工作。

您需要执行以下操作:

  1. 在 Jenkins 中设置一个名为“集成测试”的工作(名称无关紧要)。配置它以运行您希望能够从 IDE 运行的测试,并允许远程机器触发构建。
  2. 将此作业设为参数化作业,并添加一个文件参数。假设这称为“TestingProgram”。这将是作业将测试的程序。
  3. 使集成测试作业使用 TestingProgram 文件来运行测试。如果您的程序需要多个文件,那么假设这将是一个包含所有必要文件的 zip 文件。
  4. 配置您的 Eclipse 项目以生成集成测试作业期望的这些相同文件(我假设这已经发生,因为它可能正在构建您程序的某种 bin 版本)

现在是将 Eclipse 连接到 Jenkins 的稍微复杂的部分。不幸的是,我认为没有任何现成的工具可以完全满足您的需求。好消息是使用自定义脚本实现起来应该非常简单。所有脚本必须做的是:

  1. 如果您的程序需要多个文件,而 eclipse 还没有这样做,则需要将这些文件压缩
  2. 它需要获取文件并将其读入某个变量,然后对其进行 base64 编码。有很多库可以为您处理大部分工作,例如 this one .让我们假设这个文件被读入一个名为 $programFile 的变量中。
  3. 它需要向 http://<your-jenkins-server>:8080/<integrated-testing-job-name>/buildwithparameters?TestingProgram=$programFile 发送 HTTP 请求

您可以阅读更多关于使用参数触发 Jenkins 远程构建的信息 the jenkins docs .

完成这些步骤的脚本几乎可以是任何东西。鉴于您希望最终将它合并到您的 IDE 中,最合乎逻辑的选择似乎是一个 ant 脚本或一个 Eclipse 插件。两者都不会太复杂 - ant 脚本只会执行这些步骤,您可以将 ant 脚本导入专门用于测试的 Eclipse 项目 - 插件可以只添加一个菜单项,当在项目中运行时,该菜单项将执行该项目的上述步骤。

注意:实际上有几种不同的方法可以使用 Jenkins 触发带有参数的构建。例如,您可以执行 POST 请求,使用 json 传递参数,如我链接到的 jenkins 文档中所述,使用 Jenkins CLI 等。并非所有这些都适用于文件参数,但您可以将它们全部用于非常相似的方式——作为自定义脚本中的一个步骤,您将在 Jenkins 上执行远程构建,并传递要用于测试的文件。比如我给出的解释是假设测试文件很小;如果不是这种情况,您可能想要执行 POST 请求。如果您在使用一种方法时遇到问题,应该很容易将其切换为使用效果更好的不同方法。

关于java - 从 IDE 中在远程服务器上运行 TestNG/JUnit 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6292165/

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