問題タブ [jmockit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5942 参照

java - ant での javaagent の設定

Ant スクリプトから JUnit テストを実行しようとしています。テストでは JMockit モック フレームワークを使用します。Java 5 では、正しく実行するために javaagent として指定する必要があります。これが私が実行しているスクリプトです:

javaagent を正しく設定していないように感じます。この例外を伴うテスト エラー:

javaagent の設定は正しいですか? そうである場合、他に何がこのエラーを引き起こしている可能性がありますか?

0 投票する
2 に答える
1824 参照

java - JMockitでの半順序メソッド呼び出しの検証

メソッドが半順序に従って呼び出されることを確認する単体テスト(JMockitを使用)を作成しようとしています。特定のユースケースは、特定の操作がトランザクション内で呼び出されるようにすることですが、より一般的には、次のようなものを検証したいと思います。

  • メソッドbeginTransactionが呼び出されます。
  • メソッドoperation1からtoまでoperationNは、任意の順序で呼び出されます。
  • メソッドendTransactionが呼び出されます。
  • メソッドsomeOtherOperationは、トランザクションの前、最中、または後に呼び出されます。

Expectations and Verifications APIは、この要件を処理できないようです。

私が持っている場合、これ@Mocked BusinessObject boで正しいメソッドが(任意の順序で)呼び出されていることを確認できます:

オプションで、FullVerifications他の副作用がないことを確認するようにします。

順序の制約を確認するには、次のようにします。

しかし、これはケースを処理しませんsomeOtherOperationunverifiedInvocationsを置き換えることはできません。これは、呼び出しにbo.operation1(); bo.operation2()順序が設定されるためです。ビジネスメソッドの正しい実装では、を呼び出すことができます。bo.operation2(); bo.operation1()

私がそれを作った場合:

someOtherOperation次に、トランザクションの前にが呼び出されると、「未確認の呼び出しが残っていません」という失敗が発生します。試しbo.someOtherOperation(); minTimes = 0てもうまくいきません。

したがって、JMockItのExpectations / Verifications APIを使用して、メソッド呼び出しの半順序要件を指定するクリーンな方法はありますか?または、を使用しMockClassて手動で呼び出しを追跡する必要がありますか?

0 投票する
1 に答える
6309 参照

java - JMockit - 同じ型の 2 つのモック インスタンス

私は JMockit フレームワークを使用しており、型の登録EventBusを可能にする単純な実装をテストしようとしています。イベントがイベント バス上にある場合、登録されているすべてのハンドラーが通知を受け取ります。イベントは、後続のハンドラーにイベントが通知されない原因となるイベント ハンドラーによって消費される可能性があります。EventHandlersEventfired

私のテスト方法は次のようになります。

このコードを実行しようとすると、次の例外が発生します。

例外は行で発生しますが、テストメソッドにパラメーターとして渡されるためtimes = 0、型をモックする必要があるため、その理由はわかりません。パラメータにorをsecondHandler追加しても違いはありません。@Mocked@Injectable

firstHandlerイベントを消費するだけの標準クラスを から作成し、コードをテストすると、すべてが正常に実行されます。しかし、その場合、firstHandlerのメソッドhandleEventが呼び出されたことを明示的に確認することはできません。これは、もはやモックされた型ではないためです。

どんな助けでも大歓迎です、ありがとう!

0 投票する
1 に答える
6797 参照

java - JMockit | パラメータに基づいて異なる戻り値を定義しようとしましたが、予期しない結果が得られました

次のようなクラスがあります。

ここで、クラスをモックして、上記の関数をテストするためにjMockitを使用しますDAO

これは私のテストクラスがどのように見えるかです:

さて、最初のマスクに関する2番目の期待値getData()、つまりモックオブジェクトは、期待値の最初の行(処理する行sql1)を宣言したことがないかのように動作するようです。

の最初の呼び出しgetData()は、初期化した値の代わりに、空のコレクションを返しますresultToSql1。2番目の呼び出しはresultToSql2、期待どおりに戻ります。

次の行にコメントすると:

最初の呼び出しは私が定義したものを返します- resultToSql1、2番目の呼び出しは空のコレクションを返します。意味あり。

だから、私は何が間違っているのですか?getData()呼び出しのパラメーターに基づいて、から2つの異なる戻り値を定義するにはどうすればよいですか?

どんな助けでもいただければ幸いです。

ありがとう!

0 投票する
2 に答える
1210 参照

java - スーパークラスがjmockitによって嘲笑されるのを防ぐには?

次のようなクラス階層があるとします。

Car クラスをテストしようとしています。しかし、車もたまたまバスを利用しています。したがって、私のテストでは、Bus をモックしようとしています。私のテストコードは次のようになります。

car.getName()が null を返すため、アサートは失敗します。

Vehicle、Car、および Bus のコンストラクターに 's を挿入することによりSystem.out.println、ロードされる「実際の」Vehicle が、new Car(name)後で の実行時にモックされた Vehicle に置き換えられるのではないかと疑ってい@Mocked Bus busます。

車が構築されたときに「インスタンス化」された実際の車両を保存するjmockitの方法はありますか?

0 投票する
1 に答える
493 参照

java - モックされたインターフェースが null です

JMockitでDAOをモックしようとしています:

このテストクラスでは:

Expectations ブロックで dao オブジェクトが使用されると、NPE がスローされます。dao の宣言を @Mocked アノテーションが付けられたメンバー変数に移動しようとしましたが、同じことが起こります。また、MyDao の具体的な実装を使用してみましたが、同じことが起こります。

0 投票する
2 に答える
1517 参照

java - モックされたメソッドの副作用をシミュレートする

メソッドのパラメーターに副作用を引き起こすクラスのメソッドがあります。

そして、このクラスがテストされています:

JMockit を使用した私のテスト方法:

0 投票する
0 に答える
2106 参照

unit-testing - JMockit で @Autowired を使用すると、 @Autowired オブジェクトが null になります

この正確な問題を扱う別の SO の質問があることを認識しています ( here )。ただし、私の場合はうまくいきません。

春を使用したMaven(Web /フロントエンド)プロジェクトがあります。pom を介して jmockit を jvm に追加しました。

SUT (省略形) は次のようになります。

FooUtilsここで、テストでインスタンスをモックアウトしたいと思います。この SO questionで与えられたアドバイスに従って、私は試しました:

残念ながら、unitUnderTestfooは bothnullであり、これが発生します。

  • 何らかのオブジェクトnew MockUp<...>{}.getMockInstance()を返すと予想していたので、これはまったく予想外です。

重要な部分を見逃しているだけだと思いますが、どれですか?

0 投票する
1 に答える
243 参照

java - JMockit と参照渡し。どちらかが間違っているに違いありません (おそらく私です!)

誰かが私が最近戦ってきたこの問題を打破するのを手伝ってくれたら、とても感謝しています. double と Calendar を取り、Calendar の値によって決まる整数を返すメソッドをモックしようとしています。モック定義は次のとおりです。

モックはセットアップされています (toString() を呼び出すと正しいテキストが返されます) が、applyInflation メソッドは上記のループの最後の反復以外のすべてに対してゼロを返します (つまり、月 new GregorianCalendar(2010) を渡すと 2 を返します)。 ,2,1)。

私は、AAA とマークされた行は、私が期待する効果を発揮していないと結論付けました。モックの期待が設定した「月」の内容に影響を与えることなく変更できる「月」の新しいコピーを指すようにポインターを変更しているようには見えません。それか、JMockit が思ったようにモックを記録していないかのどちらかです。

助けてください!どこが間違っているのか教えてください。私の Java の理解に根本的な欠陥があるか、JMockit の実装が「あるべき」方法で動作しないため (私によると :))、ここで何が起こっているのかを知りたいと思います。または、私は、開始の 2 つの夜が発見されていない本当の男子生徒のエラーを犯しました.

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