Console component in JavaFX
As someone who's been working with your project and your Console Gui here's my 2 cents:


protected final TextArea textArea = new TextArea();
protected final TextField textField = new TextField();



these could use a rename. The names do not contain any information and in all the unit tests you wrote, this was confusing me very much: Which is in, which is out?

I'd rather have something like:

protected final TextArea output = new TextArea();
protected final TextField input = new TextField();





textField.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -&gt; {
    //long block of code...



I like very much that you are using a comprehensively wired lambda. I don't like that you are mixing abstraction levels here. on the one hand, you have that "I configure my console" code like textArea.setEditable(false), and then you have that switch (keyEvent.getCode())

Personally I'd have instead extracted the handler code to a separate handler (which needs a better name than what I am about to propose):

private final EventHandler&lt;KeyEvent&gt; keyReleasedHandler = new EventHandler&lt;&gt;() {
        handle(final KeyEvent keyEvent){
            //your code here
        }
    }
textField.setOnKeyReleased(keyReleasedHandler);


This also makes it easier to understand, where your constructor ends, without seeing the method signature that follows. While we're at it:


    setCenter(textArea);

    //here comes the whole event handling

    setBottom(textField);



Why not put together what belongs together. Both of these are layouting commands, the other two are behavior commands. I'd go for:

setCenter(output);
setBottom(input);

output.setEditable(false);
input.setOnKeyReleased(keyReleasedHandler);




Other than that, your code is very concise and understandable. I like your defensive programming style ;)