2016-12-06 8 views
-3

私のクラスの別のクラスのインスタンスへの呼び出しをモックしようとしています。私が見ている問題は、テストを実行すると、モックオブジェクトが実際のオブジェクトに置き換えられていないように見えるということです。私はこの事例を説明するためにここで簡単な例を作りました。ここではthis is awsomeの代わりにtadaを印刷したいのですが、方法はprintAwsome()です。私は参考のために私のコードを以下のリンクに入れています。もし何かが間違っていると私に知らせてください。Mock外部のメソッド呼び出しIn Juintsクラスから

https://gist.github.com/anonymous/1eab366c60efb75b9075f100a67c851b

私はoptionPane.printAwsome()誰かが私がここで間違ってやっているものに私を指すことができ模擬しようとすると、ExcelSupporTestはthis is awsome代わりのtadaを出力します。これは単に、同様にその読み手段として何

DefaultOptionPane defaultOptionPane = mock(DefaultOptionPane.class); 
when(defaultOptionPane.showMessageDialog(anyObject(), anyObject(), anyString(), anyInt())) 
       .then(//do what you want to do here <Answer>); 

たびです:私はあなたがメソッドshowMessageDialogへの呼び出しを模擬しようとしている場合、質問を形成推測できるものに

+1

を模擬することができます。メソッド/クラスを模擬しようとしているところでコードを共有できますか?上記のテストは表示されません。 – nullpointer

+0

オーバーヘッドを削除するシンプルなバージョンを作って見て、これが役に立ったら教えてください – user2540256

+0

あなたはコードを削除して質問360を変更しました。理解を深めるために質問を改善してください。これはまた、質問に応じて答えを更新するのに役立ちます – nullpointer

答えて

0

は、次のようDefaultOptionPaneをからかってみてくださいshowMessageDialogAnswerと記載されている何らかのパラメータを返すパラメータのセットをthenに呼び出します。

+0

私はそれを試みましたが、まだshowMessageDialogの中に入っていません。なぜ – user2540256

0

メソッドのパラメータとして渡さない限り、ストーリーは短いので、メソッド呼び出しをモックすることはできません。

それはスコープを持つ問題となるので、この

public void testMethod(DefaultOptionPane optionPane) { 

     System.out.println("Entering method"); 
     System.out.println(optionPane.printAwsome()); 
     System.out.println("Exiting Method"); 
    } 

この

public void testMethod() { 
     DefaultOptionPane optionPane = new DefaultOptionPane(); 
     System.out.println("Entering method"); 
     optionPane.printAwsome(); 
     System.out.println("Exiting Method"); 
     } 

を交換した後、あなたは、私は上記の嘲笑何も表示されませんoptionPane

+0

いいえ、私はあなたがこのコードで何かを嘲笑しているとは思わない。 – nullpointer

+0

私はoptionPane.printAwsome()を嘲笑しているExcelSupportTest.javaを持つ要点のリンクに置き換えました。 – user2540256

+0

私はコードを不必要な詳細で人々を圧倒しないように簡単に変更しました – user2540256

関連する問題