我有一些简单的GWT客户端代码,我想使用GWTTestCase
和GWTTestSuite进行测试。
但是,这些测试需要使用一些CSS stylesheet
(仅用于测试)。
我的第一次尝试是:
- 定义一个
ClientBundle
,它提供用于测试的CSS文件 - 在我的
gwtSetUp()
中,在调用测试之前,调用`ensureInjected()方法来添加CSS文件 - 例如,测试CSS样式是否应用于DOM中的特定元素
代码:
assertEquals("blue", element.getStyle().getBorderColor());
我没有任何错误,但这似乎不起作用
通过查看控制台的日志(在Junit测试期间),我发现:
正在初始化ResourceGenerator
查找可操作的CsResource子类型
计算CSS类替换
准备方法css
查找资源
解析CSS样式表文件:/D:/Workspace/librarys/gwt-text/gwt-text/src/test/java.com/t/i/client/CSSDecorationTest.CSS
正在扫描CSS以查找需求
创建字段
正在为css()创建赋值
创建图像精灵类
替换基于属性的@if块
替换CSS类名
在节点边框颜色中执行替换:
我的css文件简单包含:
.d {
border-color: blue;
}
编辑
请查看此链接:https://stackoverflow.com/a/10575244/921244
这是错误的方法,因为getStyle不提供CSS计算样式。太糟糕了。
如果您不需要对CSS做任何特别的事情(即它是一个简单的CSS,而不是CssResource
),然后,您可以简单地创建一个专门用于测试的GWT模块(gwt.xml
文件)(使其<inherits>
成为测试中的模块,并让GWTTestCase
的getModuleName
返回测试特定模块的名称,而不是测试中的模块),在其中添加<stylesheet src="…" />
以包含样式表(如果样式表只用于测试,最简单的方法是将其放在特定于测试的gwt.xml
文件旁边的public
子文件夹中)
看见https://developers.google.com/web-toolkit/doc/latest/DevGuideOrganizingProjects#DevGuideAutomaticResourceInclusion
或者,使用CssResource
,您可能希望在呼叫ensureInjected()
之后立即呼叫StyleInjector.flush()
。