3

我在GWT+SmartGWT应用程序的客户端进行单元测试。

首先,我使用GwtTestCase进行了测试。对大型应用程序进行单元测试的时间太长。GwtTestSuite没有帮助。执行起来仍然需要太多时间。(更多,它要求我在测试时启动浏览器)

然后gwt-test-utils:很棒的框架。可悲的是,我的 javassist 版本是 3.5,至少需要 3.11。吉利德使用 Javassist,所以我不能碰这个。所以,没有 gwt-test-utils...

我看到了。那太好了。使用 htmlunit 驱动程序,它又快又好用。测试 web 应用程序的最简单方法。这里的问题是 SmartGWT 在生成网页时会生成它自己的 ID。所以我无法获取 TextItems 并填充它们,因为这些 ID 不断变化。我发现它可以通过在小部件初始化之前使用 setID() 来解决。但这是 scLocator 的 ID,而不是 HTML ID。Selenium 不想与 scLocator 一起工作。

=> 有没有一种简单的方法来接受带有 Selenium 的 scLocator ? (当我说简单时,它一定很简单......我不是Java专家......)

有人可以帮我对应用程序进行单元测试吗?它是用 Java 编码的,它很大,我必须覆盖大约 70% 的代码(25k 行代码)

更多规格:Maven 用于编译。我没有接触服务器端。测试必须比 GwtTestCase 和 Suite 快:/

我希望我的问题很清楚,我不是以英语为母语的,所以很抱歉我可能犯的错误:x

4

3 回答 3

1

我们在 SDK 的顶层“selenium”目录下提供 Selenium 扩展和用户指南。

如果您下载 3.1d(从 smartclient.com/builds),还有更多文档,包括一些 JUnit 示例。

不要使用 ensureDebugId() (根本没有效果)。永远不要尝试使用 DOM ID(不起作用)。

Selenium 用户指南中的最佳实践信息解释了何时应该使用 setID()。

于 2012-04-24T22:51:30.690 回答
0

我发现它可以通过在小部件初始化之前使用 setID() 来解决。但这是 scLocator 的 ID,而不是 HTML ID。

你为什么不试试:

widget.ensureDebugId("some-id");

来自ensureDebugId()的 Java 文档:

确保这个 UIObject 的主元素有一个 ID 属性集,允许它与第三方库和测试工具集成

于 2012-04-20T10:29:20.530 回答
0

<defaultUserExtensionsEnabled>true</defaultUserExtensionsEnabled>
<userExtensions>[user-extensions.js 的路径]</userExtensions>

我们去吧。我设法使它工作。(使用 <configuration> 标签中的 selenium-maven-plugin)

不过感谢您的帮助。

于 2012-04-27T09:12:38.030 回答