【问题标题】:How can I automate my tests for Java application without using UI?如何在不使用 UI 的情况下自动化我的 Java 应用程序测试?
【发布时间】:2014-01-29 12:25:42
【问题描述】:

我可以访问代码库(从 SVN 签出到我的本地计算机)。它是使用 Java 和 Groovy 使用 Grails 框架(MVC 架构)编写的。我是一名测试人员,作为自动化测试的一部分,我想编写代码来调用控制器,作为回报,我可以通过查看响应或数据库中的条目来检查结果。我基本上想跳过 UI 部分。

我该如何开始?我可能无法在开发项目中编写我的代码(我想我不允许这样做)。我需要为它创建一个单独的框架吗?或者我可以把所有的 jar 文件包含在一个项目中并在上面写代码吗?

post 中的答案实际上是我正在寻找的,但只是针对 Java 应用程序。有什么 API 可以使用吗?

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 为什么不能使用 Grails 框架中提供的文档齐全且集成良好的测试工具?

标签: grails testing automation


【解决方案1】:

如果应用程序不提供 Json、XML 或类似 API,您可以在 jUnit 测试方法中使用像 HtmlUnit 这样的测试库。

"Getting Started" 部分的示例:

@Test
public void homePage_Firefox() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
    Assert.assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());

    webClient.closeAllWindows();
}

请注意,HtmlUnit 尝试像虚拟浏览器一样工作(100% 用 Ja​​va 编写),但它在执行 Javascript 时有点受限。

然后,使用 jsoupJericho HTML Parese 等其他库检查代码并获取要在数据库中检查的值。

另一方面,如果应用程序确实提供了获取数据的方法,您可以使用Jersey Client API 发出 REST 请求并获取值。这很简单。看这个例子:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:9998").path("resource");

Form form = new Form();
form.param("x", "foo");
form.param("y", "bar");

MyJAXBBean bean =
target.request(MediaType.APPLICATION_JSON_TYPE)
    .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),
        MyJAXBBean.class);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2017-06-16
    • 2020-04-03
    相关资源
    最近更新 更多