0

私はこのガイドに従っていますhttp://javaeenotes.blogspot.com/2011/06/short-introduction-to-jmock.html

エラーを受け取りました

java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s signer information does not match signer information of other classes in the same package.

ガイドでは、著者は次のように述べています。

解決策は、ビルド パスで標準の jUnit ライブラリの前に jMock ライブラリが含まれていることを確認することです。

「標準 jmock ライブラリ」と「junit ライブラリ」を構成するものは何ですか? Junit には jar が 1 つしかないので簡単ですが、jmock には 10 種類以上の jar が付属しています。

私が使用してきた: j-unit4.10、jmock-2.5、hamrest-core、hamcrest-library

hamcrest のコア クラスとライブラリ クラスは何のためのものですか?

4

3 に答える 3

1

私は両方のライブラリのコミッターです。JMock は hamcrest に依存して、オブジェクトの呼び出しが必要かどうかを判断します。hamcrest-all jar を使用することをお勧めします。hamcrest コアとライブラリの分割は、マッチングと報告の違いの基本的な動作を、最も一般的なケースの便利な実装から分離することでした。

最後に、hamcrest を使用している場合は、junit.jar に含まれている hamcrest の一部の機能との衝突を避けるために、junit-dep jar を使用することをお勧めします。

于 2012-04-29T09:21:17.493 に答える
0

モックフレームワークは、モックメソッドクラスなどを提供するために、舞台裏でいくつかのブラックマジック(ランタイムバイトコード操作を含むがこれに限定されない)を実行します。これを行うには、基本的なjunitクラスを微調整する必要があります。これを行う唯一の方法は、JUクラスがロードされる前に自分自身をJavaエージェントとして登録することです。

また、モックフレームワークをクラスパスのjunitの前に置きます

于 2012-04-26T09:08:17.617 に答える
0

JUnit は、メソッドをテストするために単体テストを行うために使用されます。JMock は、コンテキスト内でプログラムをテストするために使用されます。コンテキスト (ENV) に送信することを期待しているものと、コンテキストに応答するものを知る必要があります。

JMock は JUnit を使用するため、依存関係の競合を避けるために、JUnit の前にそれを含める必要があります。

JMock の 10 個のライブラリは、JMock スクリプトまたは JMock コアで利用できないその他の機能を使用する必要がある場合の一種のアドオンです。

JMock を使用するために Hamcrest-core ライブラリについて知る必要はありません。Web サイトのガイドに従い (JMock のバージョン 1 を使用しないでください)、ライブラリを正しい順序で整理します (エラーを回避するには、JUnit を最後に配置する必要があります)。

于 2012-04-26T08:39:57.790 に答える