2017-02-07 4 views
0

現在、私はTestNGを使用しており、 のmanipulateMetaData()メソッドのテストケースを記述しようとしています。そのメソッドの中で、metaDataはリポジトリによって与えられます。メタデータは、指定された連絡先リストに従って更新されます。データベースによるローカルオブジェクトの戻りを保持する次のメソッドのテストケースの記述方法?

私は、manipulateMetaData()メソッドのテストケースを記述している間に立ち往生しました。

public class MetaData { 

    String email; 
    Map<String, Integer> count = new HashMap<>(); 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public void updateCount(List<String> contact) { 
     // perform the calculation and update the count. 
    } 
} 

public class MetaDataHandler { 

    @Autowired 
    MetaDataRepository metaDataRepository; 

    public MetaData manipulateMetaData(String emailAddress, List<String> contact) { 
     MetaData metaData = metaDataRepository.findOneByEmail(emailAddress); 

     if (metaData == null) { 
      metaData = new MetaData(); 
      metaData.setEmail(emailAddress); 
     } 

     metaData.updateCount(contact); 

     return metaData; 
    } 
} 

のTestCase

@Mock 
MetaDataRepository metaDataReporitory; 

@InjectMocks 
MetaDataHandler metaDataHandler = new MetaDataHandler(); 

@BeforeMethod 
public void setUp() { 
    MockitoAnnotations.initMocks(this); 
} 

@Test 
public void testManipulateMetaData() { 
    List<String> contact = new ArrayList<>(); 

    String emailAddress = "[email protected]"; 

    Mockito.when(metaDataReporitory.findOneByEmail(emailAddress)).thenReturn(null); 
    //Stuck Here 
    //Want to test manipulateMetaData() method 
} 
+2

を参照してください間違って 'metaData.updateCount(一覧接触)を探します;' 'metaData.updateCount(接触)する必要があります;' –

+0

感謝。今私は問題を修正しました。 – Someone

+0

あなたはどこにいらっしゃいますか?あなたが探しているものは何ですか? – VedX

答えて

0

Mockito.when(新しいメタデータ()thenReturn( "あなたの嘲笑オブジェクト")。));

これはあなたを助けます、google詳細

+0

基本的に私はmetaData.updateCount(contact)をどのように処理するのか分かりません。そのメソッドのテストケースを記述します。 – Someone

+0

hey .. metaData.updateCount(リンクリスト連絡先) –

+0

updateCount()は、メタデータの内部状態を変更します。しかし、あなたが見ることができるように、それは何も返されません。 – Someone

0

!!

はい、あなたはprom.xmlで依存関係を与えるべき場合にもMavenを使用していますが、テストケースを作成しながら、電子メールアドレスとカスタムリストを渡し、JUnitテストを書きながらのfuctionにその値を渡す必要が

ケース。

String email="[email protected]"; //your email custom here you can take value from scanner also just declare the scanner object and take value from user . 
List<String> contact = new LinkedList<String>; //declaration of linklist 

//now write code here to take some value from the user (like we normally take some value and insert it into the list) 
//once list value is inserted do ... 

Metadata meta_test = null ; // take obj of metadata as you have made a return type 

meta_test= manipulateMetaData(email, contact); //call that function 

//if return we get is null that means nothing is inserted in meta_test and it must show red while testing and if not null that means test case is successful :) 

if(meta_test != null) 
{ 
    asserttrue(true); 
} 
else 
{ 
    assertrue(false); 
} 

//望みは、私はあなたの問題を解決し、私はそのためのいくつかの場所..srryに長期的OD構文で具体的ではないかもしれない:)

+0

metaData.updateCount(contact)の処理方法。 ?テストケースを書く。 – Someone

+0

同じ関数のテストケースを作成することもできます:) void型関数を作成しないようにしてください。その関数の戻り値の型を主にブール値 にして、戻り値の型が真であるかどうかを調べます。上記のコメントのように別のクラスのテストケースを作ることができます:) –

0

を参照してくださいユニットテストであなたのコードの動作をテスト単位。ここでは、metaDataReporitory.findOneByEmail(emailAddress)nullを返し、manipulateMetaData()が電子メールアドレスとupdateCountで新しいレコードを作成すると、manipulateMetaData()の動作を確認するテストケースを作成しているとします。

これまでのところ、metaDataReporitory.findOneByEmail(emailAddress)をうまく模倣しました。次のステップは次のようにする必要があります。

  • たとえば、manipulateMetaData()メソッドを呼び出します。今 Metadata metadata= metaDataHandler.manipulateMetaData(emailAddress ,contacts);
  • 実際、いくつかの チェックアサートん)manipulateMetaDataを(やったことを確認してください。

    のassertEquals(metadata.getEmail()、EMAILADDRESSを)。

  • あなたはまた、モックオブジェクトの呼び出しを確認することができます。

    は(モック、atLeastOnce())metaDataReporitory.findOneByEmail(EMAILADDRESS)を確認します。より多くのテストシナリオのための

このコードthis

関連する問題