問題タブ [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.

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

java - コンボボックス/チョイスボックスの特定のテキストに対するTestFX clickOn()

fxrobot (javafx) を使用した TestFX GUI テストは初めてです。

私の現在のタスクは、コンボボックスで作成されたドロップダウン メニューの選択肢をクリックすることです。この問題について言及しているチュートリアルは見つかりませんでした。

コンボボックス/ドロップダウンメニューでテキストを選択する clickOn() メソッドを実装することは本当に可能ですか? それを行う方法の例はありますか?

どうもありがとう!

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

java - JavaFX プログラムのメイン メソッドを単体テストするにはどうすればよいですか?

現在、100% のコード カバレッジをプロジェクトに組み込むことを検討しています。ただし、コードのメイン エントリ ポイントの単体テストに問題があります。

このメソッドは、まったく新しい JavaFX プログラムをバックグラウンドで起動するため、テストが困難です。この動作に加えて、JavaFX プログラムは複数回開始できません。さらに、javafx.application.Application のドキュメントには、「JavaFX アプリケーションは、FX ツールキットが終了した後、または ShutdownHook から、つまりstop()メソッドが返された後、またはメソッドSystem.exit(int)が呼び出された後、JavaFX を使用しようとしないでください」と明示的に記載されています。

JavaFX のクリーンなテストに役立つライブラリであるTestFXも使用しているため、このプロジェクトに遭遇しています。ただし、このライブラリはメイン メソッドのテストをサポートしていないため、回避策を作成する必要があります。TestFX の開発者は、この問題の可能な回避策を知っている可能性があります。ユニット テストされたメソッドごとに、新しいインスタンスApplicationが開始されます。おそらく、JavaFX プログラムのすべての変数を完全にシャットダウンしてリセットする方法があるかもしれません。

公平を期すために、この方法はテストするのにそれほど重要ではありませんが、100% のコード カバレッジが得られるとよいでしょう。このメソッドもテストしないことは完全に合理的です。完全なクラスは以下にあります。

上記の静的変数は、前述の質問とは無関係であり、委譲が正しく機能することを保証する別のクラスでのテスト目的で使用されます。アプリケーションは、コードのテストを容易にするデリゲート クラスにほとんどの操作を委任します。

さらに、IntelliJ では、コードのテスト中にメソッドを除外することはできません。 他にご不明な点がございましたら、お気軽にお問い合わせください。ありがとうございました!

いくつかの追加の読み物:

  1. javaでlaunch()を複数回呼び出す方法
  2. https://github.com/TestFX/TestFX/blob/master/subprojects/testfx-core/src/main/java/org/testfx/api/FxToolkit.java