問題タブ [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.
javafx - この場合、GroovyMock を使用しなければならないのはなぜですか?
MCVE は次のとおりです。
main.groovy:
testfx.groovy:
build.gradle:
ファイル src/main/resources/core/mainWindow.fxml の詳細は重要ではありませんが、例を次に示します。
上記のテストは失敗します。実際のメソッドStage.show()
が呼び出され、それがモックであるという事実は無視されます。これを aから
a に変更すると、代わりにモック メソッドが使用され、テストに合格します。通常の Spockが無視される
のはなぜですか?Mock
GroovyMock
show()
Mock
java - TestFX ロボットの速度を変更しますか?
具体的にはWriteRobot
/ WriteRobotImpl
. 書くのがかなり遅いようで、もっと速く書きたいと思っています。
編集
MSのコメントに応えて、私はこれを試しました(注:この時点では、それWriteRobot
が関与していることはわかっていませんでしたTypeRobot
):
残念ながら、1 ミリ秒に設定しても、タイピング速度に違いはないようです。
編集
Slaw のコメントに注意します。
System
テストを実行する前にプロパティを設定しましたtestfx.robot.write_sleep
。これは、WriteRobotImpl.java の上部にあるソース コード (以下を参照) から、影響がある可能性があることを確認できたにもかかわらず、効果がありませんでした。これを 500 ミリ秒に設定しても何の効果もありませんでした。なんらかの理由でプロパティがそこのコードに表示されていないと判断したため、デフォルトの 25 ミリ秒が設定されていました。
NB 考えられるその他の原因: そこのコードに従うと、WriteRobot.write
常に が呼び出されWriteRobot.typeCharacterInScene
、次に と がBaseRobot.typeKeyboard
呼び出されるように見えますWaitForAsyncUtils.waitForFxEvents
。後者は「難しい顧客」である可能性があります。押された各キーが「イベントを待つ」必要がある場合は、何もする必要がない可能性があります。
org.testfx.robot.impl.WriteRobotImpl.java の上部にある次の行がSystem
プロパティを認識できない理由を解明しようとしています:
また、テストが実行される前にプロパティstatic{...}
を設定する必要があるよりも早くコード ブロックが発生するのではないかと考えました。System
このプロパティをgradle.buildで設定してみました。まだ成功していません。