cucumber/cucumber-jvm — pull request #766 by SierraGolf (2014-08-31 18:22:50+00:00)
Title: android instrumentation refactor

The main target of this refactor was to split up the rather complex logics inside the ```CucumberInstrumentationCore``` in order to have a better maintainability of that piece of code and to be able to throw in some test coverage.

In order to do that I separated out the different concerns the class was previously handling into separate classes which are now being utilised/orchestrated by the ```CucumberInstrumentationCore```. The following aspects were extracted into their respective classes:

* converting the bundle into an "arguments" object, see ```Arguments``` (previously known as ```InstrumentationArguments```
* running the actual tests, see ```CucumberExecutor```
* dumping coverage data, see ```CoverageDumper```
* waiting for the debugger, see ```DebuggerWaiter```

Aside from moving around code and adding test coverage these are the most notable changes which happened during the refactor:

* ```InstrumentationArguments``` got renamed to ```Arguments```
* unnecessary ordering of cucumber options has been removed (was only added to make the tests pass)
* the logic inside the ```AndroidResourceLoader``` has been simplified
* the logic of printing the summary (errors and snippets) has been moved to the ```AndroidLogcatReporter```
* the ```Arguments``` class does not hold a reference to the ```Bundle``` anymore, but extracts all data once and is a pojo afterwards
* powermock has been added as a dependency in order to be able to test static android methods
* the robolectric version has been bumped to 2.3 in order to test logic around ```DexFile```s
* guava has been added in order to work more conveniently with collections
* the ```CucumberInstrumentationCore ``` methods ```onCreate``` and ```onStart``` have been renamed to ```create``` and ```start```, because those methods are not callbacks but should be called in those callbacks