现在,我正在考虑将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. 如果您还有其他疑问,请告诉我。谢谢!
一些其他读物: