I have a simple JavaFx application (Java 8) that has a unit test using TestFx. However, when the test is run, the application window starts up and the mouse is moved to do whatever action is in my test. Can these tests be run in a way where the application doesn't popup and I can still use my mouse for other things as the automated build and tests are running?
相关问题
- Dependencies while implementing Mocking in Junit4
- How to unit test a reactive component where ngCont
- I get an exception when trying to swap elements in
- JFX scale image up and down to parent
- Dragging an undecorated Stage in JavaFX
相关文章
- How to replace file-access references for a module
- How to mock methods return object with deleted cop
- What is a good way of cleaning up after a unit tes
-
EF6 DbSet
returns null in Moq - React testing library: Test attribute / prop
- React/JestJS/Enzyme: How to test for ref function?
- python unit testing methods inside of classes
- Running into System.MissingMethodException: Method
Update:
I found this blog post that provides the solution for me to this problem. As the author suggests, you need to add the following dependency to your build:
Then you will need to include the following somewhere before you call
registerPrimaryStage()
, in my case in a method marked with@BeforeClass
as I am using JUnit:I would also add that its useful to include
System.setProperty("java.awt.headless", "true")
to ensure that you're not relying on anything from the AWT (in my case I had a call to get the size of the screen that was causing problems). I also followed the blog author's advice to add a switch to turn headless mode on and off. This gives the final method as follows:You can see the solution in context here
Original Answer:
If you're using Linux, you can use xvfb for this. On a Debian-based system you can install xvfb as follows:
With xvfb installed, run the following before you run your tests:
If you launch your tests in the same console TestFX will use the frame buffer instead of your main display. Thus the tests will run but you won't be bothered with windows opening and the mouse pointer being moved around.
I would agree with KDK for using Monocle, since it does work as charm with Jenkins. I couldn't have reliable result from Xvfb on Jenkins. Below is the steps I took and works for me.
Prepare Monocle
You want to download Monocle from Monocle Github. It looks there is api change, so you would want to edit MonocleView.java with adding below method after download. I'm not sure what I should put in the method, but found it just works without implementing it.
Install Monocle
Build the Monocle jar and put the jar into your JRE (under jre/lib/ext path)
Run Monocle with Glass lib
Below is my maven command used in jenkins, you will have interest on java runtime option portion.
Yes, it is possible to perform headless testing of JavaFx2 applications. You will need Monocle(part of OpenJFX). More details here: https://github.com/TestFX/Monocle