問題タブ [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.
java - JMockitでジェネリックオブジェクトを使用してメソッドをモックするにはどうすればよいですか?
JMockitの使用方法を知っている場合、この質問は自明です。ジェネリックスが含まれているメソッドをモックするにはどうすればよいですか?このメソッドをモックしたい:public T save(T entity)しかし、それは常に次のような例外をスローします:
debugging - デバッガーは JMockit では動作しません
ここで誰かにとって簡単な質問であることを願っています.....
私は RAD 7.5.2 を使用しており、Junit テストを作成しています。私は JUnit 3 で問題なく記述していましたが、いくつかの関数呼び出しをモックアップしたいと考えました。そこで、jmockit 0.9.7 と Junit 4.6 をロードしました。VM 引数として -javaagent:jmockit.jar も含めます。
「Run As Junit Test」を実行しても、まったく問題はありません (少なくとも、出力には何も表示されません)。Junit の出力は良好で、コンソールにエラーは出力されません。
「Junit テストとしてデバッグ」すると、動作しません。それは私を次のように捨てます:
InstrumentationImpl.class --> ソースが見つかりません
...そして、続けるをクリックすると....
NativeMethodAccessorImpl.class --> ソースが見つかりません
...そして、続行をクリックすると...
JUnit はこの後終了します。以下をコンソールにダンプします。
スレッド「メイン」での例外 java.lang.reflect.InvocationTargetException での sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) での sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) での sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl) .java:43) at java.lang.reflect.Method.invoke(Method.java:618) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:160) 原因: java.lang.UnsatisfiedLinkError: sun/instrument/ InstrumentationImpl.redefineClasses0([Ljava/lang/instrument/ClassDefinition;)mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:197) で sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:98) の V。再定義エンジン。mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:116) の redefineMethods(RedefinitionEngine.java:184) mockit.internal.RedefinitionEngine.setUpInternalStartupMock(RedefinitionEngine.java:53) の mockit.internal.Startupload.InternalStartupMocks(Startup.java) :123) mockit.internal.Startup.initialize(Startup.java:110) at mockit.internal.Startup.premain(Startup.java:97) ... 5 もっと見る
致命的なエラー: -javaagent の処理に失敗しました
テストで JUnit 3 と JUnit 4 の両方を問題なく実行できます。-javaagent:jmockit.jar を使用すると (デバッガーを使用します。それ自体は問題ありません)、問題が発生するため、それを実行する必要があります。 jmockitのものを使用します。
考え?
jmockit - Jmockit抽象クラスインスタンス
抽象クラスのメソッド「A」をモックしたいのですが、ユニットテストを行っているメソッドにタイプAのインスタンスを渡す必要もあります。
Mockit.newemptyProxyのようなJmockitを使用してインスタンスを作成する方法はありますか?このシナリオを解決するにはどうすればよいですか?
jmockit - JMockit と EMMA を使用した ClassFormatError
JMockit を使用するいくつかの JUnit テストのカバレッジを測定するために EMMA を使用しようとしています。しかし、EMMA で計測した後に JMockit テストを実行しようとすると、テストの約 4 分の 1 が次のエラーで失敗します。
どのテストが失敗し、どのテストが失敗しないかについてのパターンはわかりません。これは JMockit の単なるバグだと思いますが、回避策を知っている人はいますか?
「EMMA で ClassFormatError を取得していますか?」という非常によく似た質問を見つけました。しかし、解決策は私にとってはうまくいきません(私は reentrant=true モックメソッドを使用していません)。他のアイデアはありますか?
前もって感謝します。
java - リスト内の各項目のモックされたメソッドへの呼び出しをテストするより適切な方法はありますか
これは、私が最近よく遭遇するパターンの例です。リストを受け取り、リスト内の各項目に対して他のメソッドを呼び出す可能性があるテスト対象のメソッドがあります。これをテストするために、予想される呼び出しパラメーターを使用してイテレーターを定義し、イテレーターの各項目に対して呼び出しが行われることを確認するための JMock 期待値内のループを定義します (以下の簡単な例を参照)。
私は Hamcrest マッチャーを見てきましたが、これをテストするものを見つけられませんでした (または、利用可能なマッチャーがどのように機能するかを誤解しています)。誰もがよりエレガントなアプローチを持っていますか?
java - JMockitハイバネートエミュレーション
誰かがJMockitHibernateEmulationを使ってみたのだろうか?
Jmockitのドキュメントによると、Hibernateエミュレーションテストを実行すると、O/Rマッピング情報は使用されません。つまり、これは、O / Rマッピング、HQLクエリ文字列、ネイティブクエリなどをテストしないことを意味します。では、Hibernateエミュレーションの実際の利点は何でしょうか。MyDAOモックを作成し、それをテストに使用できます。なぜhibenrateエミュレーションに煩わされるのか、すべてのDAOをモックアウトするだけです。どう思いますか ?
ありがとう。
java - JMockIt System.getenv(String) の方法は?
私が今持っているもの
テスト対象のクラスが依存し、そのシングルトンがSystem.getenv(String)
そのコンストラクターで使用しているサードパーティのシングルトン インスタンスがあります。この呼び出しをモックすることは可能ですか?
私はこれを試しました
JMockIt の例
しかし、それは私に与えEXCEPTION_ACCESS_VIOLATION
、JVMをクラッシュさせます。
単体テスト用にシステム環境変数を設定する別の方法はありますか?
java - jMockit を使用してネイティブ メソッドをモックする方法
jMockit を使用して netscape.javascript.JSObject への呼び出しをスタブ化しようとしていますが、これは残念ながらいくつかのネイティブ メソッドを含む抽象クラスであり、どちらも jMockit ではうまく機能しません。jMockitまたはプレーンJavaを使用してこれをスタブ化する方法はありますか(可能であれば新しいライブラリを導入する必要はありません)? モックを挿入しようとしているコードは次のようになります (質問しないでください)。
JSObject win = JSObject.getWindow(this);
String someVal = (String) win.call("foo", new String[] {""});
残念ながら、問題のコードを変更することはできません (繰り返しますが、聞かないでください)。そのため、何らかの種類の単体テストを実行できる唯一の方法は、スタブアウトする方法を理解するか、または別の方法で呼び出しを排除することです。 JS オブジェクト。私の現在のモック実装は、getWindowへの呼び出しに対してそれ自体の新しいインスタンスを返し、呼び出す呼び出しに対して定数文字列を返しますが、もちろん、実行時に不平を言って失敗します
クラスの再定義に失敗しました: メソッド修飾子を変更しようとしました
私の調査から、ネイティブメソッドをモックしようとしていることを発見しました。
編集:ターゲットプラットフォームのため、ビルド/テストにJDK 1.5を使用する必要があるため、1.5でソリューションを実行できる必要があります。
maven-2 - 一部のMavenプロファイルのクラスパスの先頭にモジュールの依存関係を挿入することは可能ですか?
jmockit-coverage-0.994.jar依存関係をプロジェクトからデフォルトでアクティブではないプロファイルに移動しようとしていますが、プロファイル依存関係から結果クラスパスの先頭に挿入できません。