While you can use filebeat, when do this what you're testing is:
disk IO (IO cache) -> filebeat -> logstash output -> network layer -> beats input -> logstash pipeline -> filters -> ...
You want to test logstash only, or your complete processing pipeline? For testing beats -> logstash (in case I don't want full filebeat), I use https://github.com/urso/generatorbeat.
Logstash itself has a generator plugin, plus file and event stdin input plugins that can be used to remove some components.
Testing with filebeat I normally use pre-made files + a shell script deleting the old registry file and restart filebeat to ensure the complete file is send again. This is a pretty static setup. Your approach with creating files/logs dynamically you can achieve by having filebeat running in background and just write new files into the directories watched by filebeat. Alternatively you can use pipes if you configure filebeat to use the stdin prospector.