这篇“Java为Liberty编写功能测试的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java为Liberty编写功能测试的方法有哪些”文章吧。
使用 IBM WebSphere Liberty 和 Open Liberty 进行功能测试的方法有很多种。本文涵盖了我认为最适合这些平台的 3 种方法:
使用构建脚本/工具来启动和停止 Liberty 服务器
使用 JUnit 规则启动和停止 Liberty 服务器
使用 Arquillian 启动和停止 Liberty 服务器
Liberty 支持最常见的构建工具,例如 Maven、Gradle 和 Ant。你可以使用这些工具中的任何一个来对你的应用程序运行测试,但本文重点介绍 Maven。
使用 Maven 等构建系统构建应用程序的一个好处是,你可以将其配置为运行一组自动化测试。war插件扩展了Java插件,提供了测试任务。你可以为正在运行的应用程序服务器之外的各个代码单元编写测试(单元测试),也可以编写它们来调用在服务器上运行的应用程序(集成测试)。
使用 Maven、Ant 或 Gradle 等构建工具的一些好处包括:
它使 Java 代码保持简单;JUnit 测试类中不需要特殊的设置代码。
你正在测试的工件是包含配置和构建生成的应用程序 WAR 的用户目录,因此它正在密切测试生产工件。
远程部署工件(例如,在云中)并针对该部署运行测试非常简单,而无需更改测试代码。
使用常见构建工具的一些可能的缺点包括:
对 Maven 插件(或其他构建工具插件)有额外的依赖性。
你只能从构建工具自动运行测试。如果不先手动启动服务器,就不能从 Eclipse(或其他 IDE)中执行此操作。
使用 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 规则可以使构建代码保持简单。您只需创建一个新的测试任务和源集的标准 Maven 设置。
你可以使用 IDE 以及通过构建来运行它。
没有外部依赖。
使用 JUnit 规则的一些缺点包括:
使用此规则会使 Java 代码复杂化,因为它负责启动和停止 Liberty 服务器以及运行测试。
部署到不同的位置比较困难,因为这都是通过 Java API 完成的。
你需要构建一个功能齐全的 Liberty 用户目录结构,包括你的服务器配置和应用程序。在此示例中,这非常适合这种情况,因为这已经是构建的输出,但情况并非总是如此。
在 Libery 中进行功能测试的最后一种技术是使用Arquillian,这是一个测试框架,可为你的 Java 应用程序开发自动化的功能、集成和验收测试。Arquillian 为您设置测试环境并处理应用程序服务器生命周期,以便你可以专注于编写测试。
使用 Arquillian 的一些好处包括:
它允许您使用 ShrinkWrap 通过测试创建和部署测试存档。在运行测试之前,无需构建功能齐全的 Liberty 服务器。
你可以使用 IDE 以及通过构建运行 Arquillian。
Arquillian 是功能最丰富的选项。例如,你可以针对多个容器(应用程序服务器)和远程服务器运行测试。
将应用程序的正确 URL 传递给测试,因此可以更灵活地控制测试环境的端口号等。
Arquillian 仍然需要定义一个骨架服务器,它必须进入主服务器运行时安装位置(不支持单独的用户目录)。
你正在测试的应用程序是由 Arquillian 通过 ShrinkWrap 工具创建的。你不会部署此实际应用程序或拥有此服务器配置。
以上就是关于“Java为Liberty编写功能测试的方法有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。