2012-06-12 101 views
0

我正在尋找一種方法來編寫被GWT編譯器忽略的代碼。例如,某些方法應該被忽略,因爲它們使用GWT中不可用的類。是否有可能編寫被GWT編譯器忽略的代碼?

是否有可能用某些@Attribute魔術標記這些方法或在編譯期間刪除代碼?在GWT平臺上運行時,代碼無論如何都不會被訪問,但是當運行此代碼/在JVM中進行測試時,它將會非常有用。

我知道我可以寫一些虛擬類(實際上我已經這樣做了)。不過我正在尋找更簡單的方法。另外,對於某些類我不能創建dummys,因爲GWT已經擁有類似System這樣的類,但只支持一小部分功能。

謝謝!

+0

你的問題已經回答了[這裏](http://stackoverflow.com/questions/6066431/strategies-for-mixing-in-the-gwt兼容和非兼容源)。 GWT沒有提供這樣的屬性。 –

+0

現在有一個解決方案(在GWT 2.6中),一個註釋:[GwtIncompatible](http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/shared/GwtIncompatible.html)。 –

回答

1

我有一些類,比如你,比如

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

SimpleDateFormat的類不是GWT類,它是強調了與紅色,當我pointit,它說:類「java.text.DateFormat中的」在JRE仿真庫中不存在,所以它不能在客戶端代碼中使用,但是我的測試運行沒有問題。 這裏是我的項目結構圖和我的一個項目測試班。 enter image description here

無論如何,任何你在gwt.xml像 將檢查申報包中的類有一個GWT仿真聲明,但你的測試在JVM環境中運行,所以你不關心不類有GWT模擬。但是如果你使用GWTTestcase的話,GWTTestcase會觸發一個瀏覽器並將測試置於環境瀏覽器之中,繞過這個問題使用MVP模式設計。 MVP1

MVP2 。祝你好運

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> 
相關問題