問題タブ [testfx]
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 - module-info.java ファイルが原因で TestFX を使用しようとしたときの IllegalAccessError
JavaFX (Maven から) を使用して、Java11 で天気予報アプリケーションを作成しました。今、私はいくつかのテストコードを書いています。「都市名が無効な場合にエラーメッセージを表示する」などのいくつかの GUI 機能をテストしたいので、TestFX を使用したいと考えています。問題は、TestFX を使用してテスト クラスを実行するたびにエラーが発生することです。
問題は、src\main\java から module-info.java ファイルを削除すると、問題がなくなることです。
残念ながら、天気アプリケーションを起動したいときにエラーが発生するため、実行できません。
要約すると、testFX を使用してアプリをテストしようとすると、エラーが発生します。module-info.java を削除すると、TestFX を使用してアプリケーションを実行できますが、アプリケーションを実行できません。
この依存関係を見つけるのに何時間もかかりましたが、それを解決する方法がわかりません。GUIをテストするためのより良い方法はありますか?あなたの助けに感謝します。
編集:解決策を見つけました。ここで言われているように、追加のクラスを作成する必要がありました: How do I install and forget Java 9 modules (on Windows)? module-info.java ファイルなしでアプリケーションを実行できるようになり、TestFX を使用したテストも同様に機能しました。
java - TestFX でテストされているコントローラーでメソッドをモックする方法は?
これは、TestFX のテストがどのように見えるかのスニペットであり、GitHub READMEから直接引っ張ってきました。
私の問題は、特にシーン/ルートを変更するアクションに関するものです。テストされているコントローラー/シーンの側面により、最後にルートが変更され、次のスタック トレースが生成されます。
そのための私の解決策は、お気づきかもしれませんが、App
(NPE を引き起こすなどのsetRoot
) 静的メソッドのサービス ラッパー クラスを作成することでした。コントローラーにアクセスできれば、理論的には次のようにモックできます。モッキート。残念ながら、上記のコード例に戻ると、コントローラー クラスへのアクセスの概念はないようです。表面レベルの作成とステージとの対話を取得できますが、基になるコントローラーにアクセスする方法がわかりません。もちろん、サービス クラスをモックするには、物理コントローラーにアクセスする必要があります。
ラッパークラスをモックバージョンに設定できるように、そのクラスにアクセスする方法を知っている人はいますか?
誰かが実際に試してみたい場合は、ソースコードを提供できます。