0

我正在寻找一种方法来编写被 GWT 编译器忽略的代码。例如,某些方法应该被忽略,因为它们使用 GWT 中不可用的类。

是否可以使用一些 @Attribute 魔法来标记这些方法或在编译期间删除代码?当在 GWT 平台上运行时,无论如何都不会访问该代码,但是当该代码在 JVM 中运行/测试时,将它放在那里将非常有用。

我知道我可以编写一些虚拟类(实际上我已经在这样做了)。我仍在寻找一种更简单的方法。此外,对于某些类,我无法创建虚拟对象,因为 GWT 已经拥有像 System 这样的类,但只支持一小部分功能。

4

2 回答 2

2

不在方法层面。您可以过滤掉源包中的特定类:

<source path="client">
  <exclude name="XMLNamespaceContext.java"/>
  <exclude name="XMLUtils.java"/>
  <!-- exclude test classes, they always end with Test.java -->
  <exclude name="**/*Test.java" />
</source>
于 2012-06-13T13:57:01.417 回答
1

例如,我有一些像你这样的课程

private DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd");

SimpleDateFormat 类不是 GWT 类,它带有红色下划线,当我指向它时,它说:JRE Emulation Library 中不存在 Class 'java.text.DateFormat',因此它不能在客户端代码中使用,但是我的测试使用没问题。这是我的项目结构和我的项目测试类之一的图片。在此处输入图像描述

无论如何,您在 gwt.xml 中声明的任何内容都会检查已声明包中的类是否具有 GWT 仿真,但是您的测试在 JVM 环境中运行,因此您不必关心没有 GWT 仿真的类。但是如果你使用 GWTTestcase 事情会有所不同,因为 GWTTestcase 会触发浏览器并将测试放在环境浏览器下。要解决这个问题,请使用 MVP 模式设计。MVP1

MVP2 。祝您好运

于 2012-06-13T06:33:00.760 回答