GWT是否支持在GWTTestCase期间包含样式表?

时间:2012-07-24 09:38:29

标签: gwt junit gwttestcase

我有一些简单的GWT客户端代码,我想使用GWTTestCase和GWTTestSuite进行测试。

但是,这些测试需要使用一些CSS stylesheet(仅用于测试)。

我的第一次尝试是:

  1. 定义提供用于测试的CSS文件的ClientBundle
  2. 在我的gwtSetUp()中,调用`ensureInjected()方法在我的测试被调用之前添加CSS文件
  3. 测试CSS样式是否应用于DOM中的特定元素,例如
  4. 代码:

    assertEquals("blue", element.getStyle().getBorderColor());
    

    我没有错误,但这似乎不起作用。

    查看控制台的日志(在Junit测试期间),我发现了这个:

      

    初始化ResourceGenerator
               查找可操作的CssResource子类型            计算CSS类替换件         准备方法css
               寻找资源
               解析CSS样式表文件:/ D:/Workspace/libraries/gwt-text/gwt-text/src/test/java/com/t/i/client/CSSDecorationTest.css
               扫描CSS以了解要求
            创建字段
            为css()创建作业            创建图像精灵类
               替换基于属性的@if块
               替换CSS类名称            在节点border-color中执行替换:.....;

    我的css文件简单包含:

    .d {
        border-color: blue;
    }
    

    修改

    请参阅此链接:https://stackoverflow.com/a/10575244/921244

    这是错误的方法,因为getStyle不提供CSS计算样式。太糟糕了。

1 个答案:

答案 0 :(得分:2)

如果你不需要对你的CSS做任何特别的事情(即它是一个简单的CSS,而不是CssResource),那么你可以简单地创建一个GWT模块(gwt.xml文件)专用于您的测试(将<inherits>作为模块测试并让GWTTestCase的{​​{1}}返回测试专用模块的名称,而不是模块测试中),您可以在其中添加getModuleName以包含样式表(如果样式表仅用于测试,则最简单的方法,将其放在{{1}中在特定于测试的<stylesheet src="…" />文件旁边的子文件夹 见https://developers.google.com/web-toolkit/doc/latest/DevGuideOrganizingProjects#DevGuideAutomaticResourceInclusion

或者,像您一样使用public,您可能希望在致电gwt.xml后致电StyleInjector.flush()