2012-02-28 17 views
4

com.google.gwt.http.client.URL.encode(String s)メソッドを呼び出すGWTクラスのJUnitテストを作成したいと思います。これは私にこの例外をスロー:JUnitテストはGWTのURL.encode()サーバー側を呼び出す必要があります

java.lang.UnsatisfiedLinkError: com.google.gwt.http.client.URL.encodeImpl(Ljava/lang/String;)Ljava/lang/String; 
    at com.google.gwt.http.client.URL.encodeImpl(Native Method) 
    at com.google.gwt.http.client.URL.encode(URL.java:155) 
    at com.example.foo.QueryBuilder.appendParams(QueryBuilder.java:44) 

は私が結合繰り延べこのURL.encode用途が有効であるために、ブラウザの実装に基づいて、私はあまりにもこれらのクラスのテストを記述する必要があることを理解しています。 GWTTestCaseを拡張しても、残念ながらこれを修正するには不十分です。

私はJUnitテストをどのようにすることができますか?

答えて

2

Unitilsを使用し、URLのモックを作成できますか?私はURLfinalであることを知っているので、サブクラス化することはできませんが、Unitilsのモックユーティリティーがそれを回避できるはずです。

http://www.unitils.org/tutorial-mock.htmlがあります。

+0

私のメソッドではURLをどこでも使用しているので、テストから実行するとモックURLインスタンスを返し、ブラウザから実行すると実際のURLオブジェクトを返すgetURL()を呼び出す必要があります。 – jabal

+0

URL.encode()はインスタンスメソッドではないので、インスタンス上で呼び出すと実際には醜いです。もっと良い解決策がありますようお願いします。:-) – jabal

+2

URL.encode()コールをどうにか分離して、テスト時に擬似または注入できる別のクラスですか? –

関連する問題