具体的にはWriteRobot
/ WriteRobotImpl
. 書くのがかなり遅いようで、もっと速く書きたいと思っています。
編集
MSのコメントに応えて、私はこれを試しました(注:この時点では、それWriteRobot
が関与していることはわかっていませんでしたTypeRobot
):
setup(){
...
setFinalStatic( org.testfx.robot.impl.TypeRobotImpl.class.getDeclaredField("SLEEP_AFTER_KEY_CODE_IN_MILLIS"), 5 );
}
...
static void setFinalStatic(Field field, Object newValue) throws Exception {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
残念ながら、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
プロパティを認識できない理由を解明しようとしています:
private static final int SLEEP_AFTER_CHARACTER_IN_MILLIS;
static {
int writeSleep;
try {
writeSleep = Integer.getInteger("testfx.robot.write_sleep", 25);
}
catch (NumberFormatException e) {
System.err.println("\"testfx.robot.write_sleep\" property must be a number but was: \"" +
System.getProperty("testfx.robot.write_sleep") + "\".\nUsing default of \"25\" milliseconds.");
e.printStackTrace();
writeSleep = 25;
}
SLEEP_AFTER_CHARACTER_IN_MILLIS = writeSleep;
}
また、テストが実行される前にプロパティstatic{...}
を設定する必要があるよりも早くコード ブロックが発生するのではないかと考えました。System
このプロパティをgradle.buildで設定してみました。まだ成功していません。