【问题标题】:Cannot initialize textarea for Junit无法为 Junit 初始化 textarea
【发布时间】:2014-10-26 10:59:45
【问题描述】:

你好,stackoverflow 朋友们

我正在为将文本添加到 Javafx textarea 的方法编写一个 junit 测试 - 此 textarea 需要为测试进行初始化。在普通课程中,我会使用

@FXML
private TextArea myTextArea;

对于 textarea - 我如何为测试初始化​​它 - 我上面显示的这种方式不起作用并且

TextArea myTextArea = new TextArea();

在设置中也不起作用。我在要测试的方法的行中都得到了 NullPointerException,该方法在 myTextArea 中设置了一个字符串。有人有什么想法吗?我可能遗漏了一些明显的东西。

MyClassTest.java

@Test
public void testDisplay {
    MyClass myClass = new myClass();
    myClass.display();
}

MyClass.java

public void display() {
    myTextArea.setText("The result of this is ....");
}
  • MyClass 是包含 TextArea 的 fxml 的控制器

我也用过

@ClassRule
public JavaFXThreadingRule javafxRule = new JavaFXThreadingRule();

在我的代码中 - 但它仍然无法正常工作

提前致谢

【问题讨论】:

  • 欢迎来到 Stackoverflow...需要查看更多代码!
  • 感谢@Nilesh - 我添加了更多代码 - 如果您需要更多代码,请告诉我
  • MyClass 是包含TextArea 的 fxml 的控制器吗?
  • @ItachiUchiha 是的,MyClass 是包含 TextArea 的 fxml 的控制器

标签: junit javafx textarea


【解决方案1】:

虽然,我并不精通 JavaFX 中的 JUnit 测试,但您无法做到这一点的最可能原因是您的测试用例需要在 JavaFX 应用程序线程上,并且您的控制器需要加载 FXML以及其中编写的控件,在您获得对myTextArea 的引用之前,这就是您获得NullPointerException 的原因

有一些不错的库可用于为 JavaFX 编写 JUnit 测试用例

还有this post 谈到用JavaFX编写测试用例

【讨论】:

  • 谢谢ItachiUchiha 我会看看那些。我之前应该提到我使用 @ClassRule public JavaFXThreadingRule javafxRule = new JavaFXThreadingRule();在我的代码中,它仍然不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 2020-01-22
  • 2017-03-26
  • 2019-01-05
  • 2018-03-22
相关资源
最近更新 更多