Unit testing in android
If you want to be run a test without device or simulator, it can be done using unit testing. Device or simulator not required to do this. It is called local unit test using JVM(Android not required). If you writing a local unit test case which has dependency of Android API then it needs to be mocked using mockito framework.
Instrumention testing
It runs on a device or simulator. In the background, your app will be installed and then a testing app will also be installed which will control your app, lunching it and running UI tests as needed. Instrumentation tests can be used to test none UI logic as well. They are especially useful when you need to test code that has a dependency on a context.
Mockeito vs Espresso vs JUnit