你如何测试GWT代码?

时间:2012-06-28 16:46:15

标签: java javascript unit-testing gwt junit

我是Google Web Toolkit(GWT)的概念的新手,据我所知,它可以告诉它一个允许您编写客户端代码的Java API和工具集在Java中,并且在某些时候(作为构建的一部分或动态地作为HttpRequests进入),它从您的Java代码生成客户端JS(如果我错了任何一个,请纠正我!)。

假设我或多或少是正确的,我想知道你是如何对它进行单元测试的!您是否为Java代码编写JUnit测试,还是为结果/生成的JavaScript编写JSUnit测试?如果您使用JSUnit,那么您如何知道生成的函数的名称和内部工作原理,因为GWT会优化并缩小它输出的所有内容?提前谢谢!

2 个答案:

答案 0 :(得分:1)

看看这里:https://developers.google.com/web-toolkit/doc/latest/DevGuideTesting

基本上,你一直在使用JUnit:尽可能使用纯Java,否则GWTTestCase(在Java -HTMLUnit中的模拟浏览器中运行 - 或在真实浏览器中运行,在DevMode中或编译为JS) -aka prod mode - ),最后是Selenium / WebDriver的集成/验收测试。

答案 1 :(得分:1)

首先,你是对的:GWT从你的客户端Java代码生成Javascript代码。然而,为了速度,我们在仍然使用Java时测试我们所能做的一切。

您编写的标准JUnit测试是从JUnit的TestCaseGWTTestCase扩展而来的。

两者的主要区别如下: 对于使用任何类型的本机javascript代码的每个类,都使用GWTTestCase(小部件和图形元素就是这样)。编译器将使用“无头”浏览器将这些测试作为javascript代码进行测试,因此与标准JUnit TestCase相比,这些测试非常慢。

这就是为什么你将标准TestCase用于其他所有东西(因为它运行为字节码要快得多),这就是为什么使用MVP模式来分离你的视图(代码可以用GWTTestCase进行测试)的好主意您的程序的其余部分(您可以使用TestCase进行测试的代码)。

Herehere是关于GWT单元测试如何工作以及您应该使用哪些模式来简化工作的两篇好文章。