温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java为Liberty编写功能测试的方法有哪些

发布时间:2022-02-28 10:30:43 来源:亿速云 阅读:138 作者:iii 栏目:开发技术

这篇“Java为Liberty编写功能测试的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java为Liberty编写功能测试的方法有哪些”文章吧。

使用 Liberty 进行功能测试的三种方法

使用 IBM WebSphere Liberty 和 Open Liberty 进行功能测试的方法有很多种。本文涵盖了我认为最适合这些平台的 3 种方法:

  1. 使用构建脚本/工具来启动和停止 Liberty 服务器

  2. 使用 JUnit 规则启动和停止 Liberty 服务器

  3. 使用 Arquillian 启动和停止 Liberty 服务器

使用 Maven 构建

Liberty 支持最常见的构建工具,例如 Maven、Gradle 和 Ant。你可以使用这些工具中的任何一个来对你的应用程序运行测试,但本文重点介绍 Maven。

使用 Maven 等构建系统构建应用程序的一个好处是,你可以将其配置为运行一组自动化测试。war插件扩展了Java插件,提供了测试任务。你可以为正在运行的应用程序服务器之外的各个代码单元编写测试(单元测试),也可以编写它们来调用在服务器上运行的应用程序(集成测试)。

使用通用构建工具的优势

使用 Maven、Ant 或 Gradle 等构建工具的一些好处包括:

  • 它使 Java 代码保持简单;JUnit 测试类中不需要特殊的设置代码。

  • 你正在测试的工件是包含配置和构建生成的应用程序 WAR 的用户目录,因此它正在密切测试生产工件。

  • 远程部署工件(例如,在云中)并针对该部署运行测试非常简单,而无需更改测试代码。

使用通用构建工具的缺点

使用常见构建工具的一些可能的缺点包括:

  • 对 Maven 插件(或其他构建工具插件)有额外的依赖性。

  • 你只能从构建工具自动运行测试。如果不先手动启动服务器,就不能从 Eclipse(或其他 IDE)中执行此操作。

使用 JUnit 规则

使用 JUnit ClassRule 允许您使用 Liberty 系统编程接口 (SPI) 从你的代码中控制你的 Liberty 服务器。从这里,你可以配置服务器,同时还可以启动和停止服务器。

下面的示例是我们从测试类中以编程方式启动和停止 Liberty 服务器的示例:

    public class RuleFunctionalTest {

        @ClassRule
        public static ExternalResource serverResource = new ServerResource();


        public static class ServerResource extends ExternalResource {


            private final Server server;


            public ServerResource() {
                String usrDir = System.getProperty("liberty.usr.dir");
                String serverName = System.getProperty("liberty.server.name");
                ServerBuilder sb = new ServerBuilder();
                server = sb.setName(serverName).setUserDir(new File(usrDir)).build();
            }

            @Override
            protected void before() throws Throwable {
                Future<Result> startReturnCode = server.start();
                Result result = startReturnCode.get();
                assertEquals(true, result.successful());
            }

            @Override
            protected void after() {
                Future<Result> stopReturnCode = server.stop();
                try {
                    Result result = stopReturnCode.get();
                    assertEquals(true, result.successful());
                } catch (InterruptedException | ExecutionException e) {
                    e.printStackTrace();
                    fail("Caught exception stopping server" + e.getMessage());
                }
            }
        }
    }

使用 JUnit 规则的优势

使用 JUnit 规则的一些好处包括:

  • 使用 JUnit 规则可以使构建代码保持简单。您只需创建一个新的测试任务和源集的标准 Maven 设置。

  • 你可以使用 IDE 以及通过构建来运行它。

  • 没有外部依赖。

使用 JUnit 规则的缺点

使用 JUnit 规则的一些缺点包括:

  • 使用此规则会使 Java 代码复杂化,因为它负责启动和停止 Liberty 服务器以及运行测试。

  • 部署到不同的位置比较困难,因为这都是通过 Java API 完成的。

  • 你需要构建一个功能齐全的 Liberty 用户目录结构,包括你的服务器配置和应用程序。在此示例中,这非常适合这种情况,因为这已经是构建的输出,但情况并非总是如此。

使用 Arquillian

在 Libery 中进行功能测试的最后一种技术是使用Arquillian,这是一个测试框架,可为你的 Java 应用程序开发自动化的功能、集成和验收测试。Arquillian 为您设置测试环境并处理应用程序服务器生命周期,以便你可以专注于编写测试。

使用 Arquillian 进行功能测试的优势

使用 Arquillian 的一些好处包括:

  • 它允许您使用 ShrinkWrap 通过测试创建和部署测试存档。在运行测试之前,无需构建功能齐全的 Liberty 服务器。

  • 你可以使用 IDE 以及通过构建运行 Arquillian。

  • Arquillian 是功能最丰富的选项。例如,你可以针对多个容器(应用程序服务器)和远程服务器运行测试。

  • 将应用程序的正确 URL 传递给测试,因此可以更灵活地控制测试环境的端口号等。

使用 Arquillian 进行功能测试的缺点

  • Arquillian 仍然需要定义一个骨架服务器,它必须进入主服务器运行时安装位置(不支持单独的用户目录)。

  • 你正在测试的应用程序是由 Arquillian 通过 ShrinkWrap 工具创建的。你不会部署此实际应用程序或拥有此服务器配置。

以上就是关于“Java为Liberty编写功能测试的方法有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI