Maybe that's only my personal taste but I think that these kind of methods make the test code harder to read then before. The method name is already very long and it still doesn't explain everything you do ("modifiying file a" - took me some time to understand the test case because I overlooked this method touches a). I prefer to have longer test-methods using utility methods with smaller scope then this long utility methods. How about modify(path) (creating-or-modifiying a file), checkout(branch) (creating (if not already there) and switching to a branch), and commit() (adding everything before).