我可以访问代码库(从SVN检出我的本地机器)。它是使用Java和Groovy使用Grails框架(MVC架构)编写的。我是测试人员,作为自动化测试的一部分,我想编写将调用控制器的代码,作为回报,我可以查看数据库中的响应或条目。我基本上想跳过UI部分。
我该如何开始?我可能无法在开发项目中编写我的代码(我不允许这样做)。我需要为它创建一个单独的框架吗?或者我可以将所有jar文件包含在项目中并在其上面编写代码吗?
这个post中的答案实际上是我正在寻找的,但对于Java应用程序。我可以使用任何API吗?
如果您需要其他信息,请与我们联系。
答案 0 :(得分: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尝试像虚拟浏览器一样工作(在Java中100%编写),但是在执行Javascript时它有点受限。
然后,使用其他库(如jsoup或Jericho 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);