gpt4 book ai didi

javafx - 带有 TestFX 的 TornadoFX 在每个 TestCase 后关闭 View

转载 作者:行者123 更新时间:2023-12-01 15:49:59 25 4
gpt4 key购买 nike

我正在尝试使用 testfx 框架测试基本登录屏幕(使用 tornadofx 创建)。

我添加了 3 个运行良好的测试用例,但问题是它们使用的是前一个阶段,而不是创建一个新阶段。我希望测试用例独立运行。

我正在测试 View() 而不是 App()。如果我使用 MyMainApp().start(stage) 然后使用 MyMainApp().stop(),我会得到所需的行为。
但是如何为 View 和片段执行此操作。

代码如下:

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
}
}

最佳答案

您可以在 App() 类中添加您可以随时编辑的属性。

class MyMainApp: App() {
override val primaryView: KClass<out View> = primaryViewMyApp

companion object {
var primaryViewMyApp: KClass<out View> = MyMainAppView::class
}

init {
importStylesheet(<your stylesheet>)
}

override fun start(stage: Stage) {
super.start(stage)
}

override fun stop() {
super.stop()
}
}

并且在测试中您可以使用任何您想要使用的 View 。到目前为止,我没有尝试为 Fragment 实现一些东西......

    override fun init() {
FxToolkit.registerStage { Stage() }
}

override fun start(stage: Stage) {
MyMainApp.primaryViewGoApp = <your view>::class
MyMainApp().start(stage)
}

override fun stop() {
FxToolkit.cleanupStages()
MyMainApp().stop()
}

关于javafx - 带有 TestFX 的 TornadoFX 在每个 TestCase 后关闭 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com