2017-02-22 3 views
0

私のJava関数のテストケースを記述しようとしています。 My機能は、以下のタイプjunitを使用して関数をテスト中にコードを無視する

public static String parse33_05_x_Data(String message, Transaction transaction){ 
    String returnValue=""; 
    /** 
    *Some Java code which I actually want to test. 
    * 
    **/ 
    //Writing the transaction to the file. 
    FileManager.getInstance().WriteDataToFile(transaction); 
    return returnValue; 
} 

のようなものです。しかし、上記のコードでは、私はそれが例外を与えているとして、何とかは/モックラインFileManager.getInstance().WriteDataToFile(transaction);を無視したいです。上記の関数自体にコードを変更する必要はありません。

どのような変化が私のTest class内部で起こるはずが要求されます。

このようなことは可能ですか?

ありがとうございます!

答えて

0

あなたはのparamとしてファイルマネージャのインスタンスを配置する必要があります。それから、このインスタンスを模擬することは可能です。また

public static String parse33_05_x_Data(String message, FileManager fileManager, Transaction transaction){ 
    String returnValue=""; 
    /** 
    *Some Java code which I actually want to test. 
    * 
    **/ 
    // mock doesnt write 
    fileManager.WriteDataToFile(transaction); 
    return returnValue; 
} 

、あなたは静的メソッドFileManager.getInstanceを()モックするPowerMockitoを使用することができますが、私の意見では、これはコードであるので、私は、このことをお勧めしません(あなたが方法を変更したくない書き込み)臭い。

0

あなたは、メソッドへの「モック」パラメータにMockitoと呼ばれるテスト・フレームワークを使用することができます。これにより、「何もしない」FileManagerを作成することが可能になります。 あなたは、このようなあなたのJUnitテストケース内のオブジェクトをモックするMockitoを使用することができます

public static String parse33_05_x_Data(String message, Transaction transaction, FileManager fileManager){ 
    String returnValue=""; 
    /** 
    *Some Java code which I actually want to test. 
    * 
    **/ 
    //Writing the transaction to the file. 
    fileManager.WriteDataToFile(transaction); 
    return returnValue; 
} 

::あなたがにmockable

public static String parse33_05_x_Data(String message, Transaction transaction){ 
    String returnValue=""; 
    /** 
    *Some Java code which I actually want to test. 
    * 
    **/ 
    //Writing the transaction to the file. 
    FileManager.getInstance().WriteDataToFile(transaction); 
    return returnValue; 
} 

作るためにパラメータにファイルマネージャをリファクタリングする必要があり

@Test 
public void test1() { 
     // create mock 
     FileManager mockedFileManager = Mockito.mock(FileManager.class); 

     // define return value for method 
     when(mockedFileManager.WriteDataToFile()).thenReturn("something"); 


     // use mock in test.... 
     assertEquals(MyObj.parse33_05_x_Data("message") new Transaction(), mockedFileManager), "expected value"); 
} 
関連する問題