testfx フレームワークを使用して、基本的なログイン画面 (tornadofx を使用して作成) をテストしようとしています。
正常に動作する 3 つのテスト ケースを追加しましたが、問題は、新しいステージを作成するのではなく、前のステージを使用していることです。テストケースを独立して実行したい。
App() ではなく、View() をテストしています。MyMainApp().start(stage) を使用してから MyMainApp().stop() を使用すると、必要な動作が得られます。
しかし、ビューとフラグメントに対してこれを行う方法。
以下はコードです:
class LoginScreenFeatureTest : ApplicationTest() {
override fun init() {
FxToolkit.registerStage { Stage() }
}
override fun start(stage: Stage) {
LoginScreen().openWindow()
//MyMainApp().start(stage)
}
override fun stop() {
FxToolkit.cleanupStages()
//FxToolkit.toolkitContext().registeredStage.close()
//MyMainApp().stop()
}
@Test fun should_contain_button() {
// expect:
verifyThat("#submitBut", hasText("SUBMIT"))
}
@Test fun should_click_on_button_and_pass_login() {
//init
//Why do I always need to erase text. I want a new stage for every test case.
clickOn("#username").eraseText(10).write("validUser")
clickOn("#password").eraseText(10).write("validPwd")
clickOn("#orgId").eraseText(10).write("validOrg")
// when:
clickOn("#submitBut")
// then:
//verify success
}
@Test fun should_click_on_button_and_fail_login() {
//init
clickOn("#username").eraseText(10).write("anyuser")
clickOn("#password").eraseText(10).write("anypwd")
clickOn("#orgId").eraseText(10).write("anyorg")
// when:
clickOn("#submitBut")
// then:
//verify fail
}
}