2017-07-21 6 views
0

DBにデータを更新するテストケースを1つ実行しようとしています。これが私のテスト方法のソースコードです。jmockit検証ブロック投げmethodNameへの1つの呼び出しがありません

私の意図は、期待どおりに記録された擬似メソッドに対する期待される呼び出しを確認することです。しかし、検証ブロックは次の例外メッセージを出しています。 回= 1を削除すると、テストケースが成功しています。それは私の望む結果ではありません。私のテストケースで何が間違っているのかも教えてください。

mockit.internal.MissingInvocation:引数を持つ SecondLevelClass#updatedbを(credsを、データ) :credsを、データに起因する

:行方不明の呼び出しを更新

に1つの呼び出しがありません質問:

updateDatabaseThroughSecondLevelClass(info)には、私たちが形成している議論から1つの議論がありますSecondLevelClassでのcreds参照

Credentials creds = info.getCredentials(); 

しかし、検証に、我々はローカルでテストオブジェクトを作成している[ FirstLevelClassの一部である]をブロックします。

Credentials creds = getCredsTestObject(); 

これは、Missing invocationsについて不平を言う理由です。両方が2つのクラスの2つの異なる参照であるためです。誰もこのケースをどう扱うか教えてください。

ありがとうございました。

+0

'creds'と' data'から来るのかはどこ?私は 'updateDatabaseThroughSecondLevelClass'から' updateDB'に実際に渡されたのと同じ値ではないと思いますので、あなたは "行方不明"を得るでしょう。ところで、JMockitの最近のバージョンは 'NonStrictExpectations'クラスをもはや持っていません。また、テストの最後に検証される予定の場合は、この期待値を記録することに意味がありません(重複しています)。また、 '@ Tested'はインスタンスを単独で作成します。明示的に行う必要はありません。ドキュメントを読むには数分を要しますが、多くの例があります。 –

+0

Rogerio、私の更新された質問をお読みください、このケースを処理する方法を示唆してください。 – Honey

+0

質問にはまだ重要な情報が欠けています。テストに使用される前に 'info'、' creds'、 'data'がどのように作成されていますか? 'FirstLevelClass'のコードが表示されていれば助けになります。 –

答えて

0

それはTestNGのとJMockit間の統合の既知の問題です:https://github.com/jmockit/jmockit1/issues/337

+0

こんにちはJuherr、私は他のクラスのために同じコンセプトを使用しています。このクラスでは問題に直面しているだけです。 – Honey

+0

フローがtimes = 1になったときにデバッグしている間、その例外がスローされます。この問題の原因を正確には特定できませんでした。 – Honey

+0

問題はTestNGとは関係ありません。どうやら(テスト中のコードは表示されていませんでした)明らかに、 'updateDB'が単に呼び出される引数は、期待に使用されたものと等しくありません。 –

関連する問題