I don't know how to test correctly void method with Preferences object inside, this is a method which I want to test:
public void setPersonFilePath(File file, ViewGenerator viewGenerator) {
    Preferences prefs = Preferences.userNodeForPackage(ViewGenerator.class);
    if (file != null) {
        prefs.put("filePath", file.getPath());
        // Update the stage title.
        viewGenerator.getPrimaryStage().setTitle("AddressApp - " + file.getName());
    } else {
        prefs.remove("filePath");
        viewGenerator.getPrimaryStage().setTitle("AddressApp");
    }
}
And here is my test class:
private FileManager fileManger;
private File file;
private ViewGenerator viewGenerator;
private Preferences preferences;
@Before
public void prepareDependencies() {
    MockitoAnnotations.initMocks(this);
    fileManger = new FileManager();
    file = mock(File.class);
    viewGenerator = mock(ViewGenerator.class);
}
@Test
public void test() {
    fileManger.setPersonFilePath(file, viewGenerator);
    verify(preferences).remove("filePath");
}
I've tried mocking preferences, as well as initializing preferences with new object inside test method.
                        
Mockito can't mock static methods like
Preferences.userNodeForPackage().My advice would be to wrap these static calls into a custom class
PreferenceManager, and to inject an instance ofPreferenceManagerinto the object under test.You could then mock
PreferenceManager, inject the mock, and make it return a mockPreferences.