2011-02-14 10 views
3

私は1つのクラスで実行するJUnitテストを行っていますが、最近GWTのエミュレートバージョンを書きました。仕様は同じなので、同じテストケースを使用したいと思いますが、GWT環境で動作させたいのですが、通常はGWTTestCaseを拡張して実行します。GWTTestCaseで現在のJunitテストを実行

私は本当にコピー/ペーストナンセンスを避けたいと思います。将来的にテストを追加する可能性が高いので、後でコピーする必要はありません。

標準の単体テストをインポート/継承して、標準のテストケースまたはGWTのテストケースとして実行するにはどうすればよいですか?

答えて

6

私はこの問題を解決しました。

元のテストをGWTTestCaseで拡張すると、getModuleNameをオーバーライドしてnullを返すことができます。これは、GWTTestCaseが通常の純粋なJavaテストとして実行されるように指示します(まったく変換しません)。

このテストケースを拡張すると、getModuleNameをオーバーライドしてモジュール名を返し、同じテストを翻訳とともに実行することができます。

基本的に

public class RegularTest extends GWTTestCase { 

    @Override 
    public String getModuleName() { return null; } 

    public void testIt() {...} 

} 

...とGWTのバージョン...

public class GwtTest extends RegularTest { 

    @Override 
    public String getModuleName() { return "some.module"; } 

} 

これの欠点は、それは私が少しを見つけた、JUnit3スタイルのテストを使用するためにあなたを強制していることです迷惑ですが、それは代替策に打ち勝ちます。

0

私は簡単な方法はないと思う..しかし、あなたはあなたのjunitテストのインターフェイスを抽出することができます、gwtテストケースとjunitテストケースは、このインターフェイスを実装しています。実装のために3番目のクラスを作成し、gwtテストケースとjunitテストのすべてのテスト呼び出しメソッドをこの実装クラスに委譲します。

public interface IRegularTest { 
     public void testSomething(); 
     public void testSomething2(); 
} 

public class RegularTestImpl implements IRegularTest { 

     public void testSomething(){ 
     // actual test code 
     } 

     public void testSomething2(){ 
     // actual test code 
     } 

} 

public class RegularTest extends TestCase implements IRegularTest { 
     IRegularTest impl = new RegularTestImpl(); 

     public void testSomething(){ 
      impl.testSomething 
     } 

     public void testSomething2(){ 
     } 
} 


public class GwtTest extends TestCase implements IRegularTest { 
     IRegularTest impl = new RegularTestImpl(); 

     public void testSomething(){ 
      impl.testSomething 
     } 

     public void testSomething2(){ 
     } 
    } 
+0

ありがとうございましたが、これは避けたいタイプのものでした。私がこれをしなければならない場合、私が必要と知っているときに、私は追加のテストを追加したくないでしょう。 –

+0

私はあなたがこれより良い解決策を見つけることができなかったと思います。あなたができるなら、私はupvoteする最初の人になります。 –

+2

GWTTestCaseを拡張し、getModuleNameをオーバーライドしてnullを返すと、純粋なJavaテストとして実行されます。 –

関連する問題