我在 GWT + SmartGWT 应用程序的客户端进行单元测试。
首先,我使用 GwtTestCase 进行了测试。单元测试一个庞大的应用程序太长了。 GwtTestSuite 没有帮助。执行仍然需要太多时间。 (更多,它要求我在测试时启动浏览器)
然后 gwt-test-utils :很棒的框架。可悲的是,我的javassist版本是3.5,至少需要3.11。 gilead使用Javassist,所以我无法触及它。所以,没有gwt-test-utils ......
我看到 Selenium 。那太好了。使用htmlunit驱动程序,它快速而有用。测试webapp的最简单方法。这里的问题是SmartGWT在生成网页时会生成自己的ID。所以我无法获取TextItem并填充它们,因为这些ID不断变化。我发现它可以通过在窗口小部件初始化之前使用setID()来解决。但这是scLocator的ID而不是HTML ID。 Selenium不想使用scLocator。
=>是否有一种简单的方法可以接受使用Selenium的scLocator? (当我说简单时,它必须简单......我不是Java专家......)
有人可以帮助我对应用程序进行单元测试吗?它是用Java编写的,它很庞大,我必须覆盖~70%的代码(25k行代码)
更多规格: Maven用于编译。 我没有碰到服务器端。 测试必须比GwtTestCase和Suite更快:/
我希望我的问题很明确,我不是英语,所以对于我可能会犯的错误感到抱歉:x
答案 0 :(得分:1)
我们在SDK中的顶层“selenium”目录下提供了Selenium扩展及其用户指南。
如果您下载3.1d(来自smartclient.com/builds),还有更多文档,包括JUnit的一些示例。
不要使用ensureDebugId()(根本不会有效果)。永远不要尝试使用DOM ID(不起作用)。
Selenium用户指南中的最佳做法信息说明何时应使用setID()。
答案 1 :(得分:0)
我发现它可以通过在之前使用setID()来解决 初始化小部件。但那是scLocator的ID 不是HTML ID。
你为什么不试试:
widget.ensureDebugId("some-id");
来自 ensureDebugId()的Java文档:
确保此UIObject的主元素具有ID属性集, 这允许它与第三方库和测试工具集成
答案 2 :(得分:0)
< defaultUserExtensionsEnabled>真< / defaultUserExtensionsEnabled>
< userExtensions> [user-extensions.js的路径]< / userExtensions>
我们走了。我设法让它发挥作用。 (使用< configuration>标记中的selenium-maven-plugin)
感谢您的帮助。