如何对JavaFX程序的主要方法进行单元测试?

时间:2019-04-07 21:14:05

标签: java unit-testing javafx main testfx

现在,我正在考虑将100%的代码覆盖率纳入我的项目中。但是,我在单元测试代码的主要入口点时遇到了麻烦:

 public static void main(String[] args) {
      launch(args);
 }

此方法很难测试,因为它在后台启动了一个全新的JavaFX程序。除此行为外,无法more than once启动JavaFX程序。此外,documentation for javafx.application.Application明确指出:“在FX工具包终止后或通过ShutdownHook,即在stop()方法返回或{{1}之后,JavaFX应用程序不应尝试使用JavaFX。 } 叫做。”

我之所以遇到这个项目,是因为我也在使用TestFX,这是一个有助于对JavaFX进行干净测试的库。但是,该库不支持对主方法的测试,因此,我必须编写一种解决方法。 TestFX的开发人员有可能知道此问题的可能解决方法,对于每个单元测试方法,都将启动System.exit(int)的新实例。也许有一种方法可以完全关闭并重置JavaFX程序的所有变量。

公平地说,此方法的测试意义不大,但是具有100%的代码覆盖率将是令人愉快的。不也测试此方法是完全合理的。完整的课程可以在下面找到:

Application

上面的静态变量与前面提到的问题无关,并且在另一个类中用于测试目的,可确保委派正常工作。该应用程序将大多数操作委托给委托类,这使代码更易于测试。

此外,IntelliJ doesn't allow methods to be excluded during code testing. 如果您还有其他疑问,请告诉我。谢谢!

一些其他读物:

  1. How to call launch() more than once in java
  2. https://github.com/TestFX/TestFX/blob/master/subprojects/testfx-core/src/main/java/org/testfx/api/FxToolkit.java

0 个答案:

没有答案