Hi, wouldn’t it be better to just do TDD in your case? You would be creating the architecture based on testing.
As for the solutions, I think the best way is the first solution because is the one that it doesn’t get in your way.
With TDD, the approach would be simple: you first create the test, check that the test fails and THEN you code the class to only fullfil the test.
I’m pretty sure UE4 doesn’t have a mock framework.
If you’re interested in some practical tests examples, I wrote a wiki to make a simple CI environment for UE4 using Jenkins In there, I link a GitHub repository with some tests.
The automation documentation in the official UE4 page is poor. Luckily there’s an automation subchannel inside unrealSlackers were your question will have more answers ;).