Korniltsev Anatoly
Korniltsev Anatoly

Reputation: 3686

uninstall app before start test

We're trying to write instrumentationTest for our app.

For example I want to write test for authorization/registration.

However before every test I want to be unauthorized? so I need to clean all data, delete db, etc.

So is there any way to delete app or app's data before every test?

Upvotes: 4

Views: 4943

Answers (3)

dannyhan12
dannyhan12

Reputation: 972

Using Android studio, you can create a test configuration that first uninstalls your app before running a test.

Create a new External Tool.

  1. Go to Preferences -> External Tools.
  2. Click on the "+" icon to create a new tool.
  3. Set Name to "Uninstall myApp" (or whatever you like)
  4. Set Group to "Custom Tools" (or whatever you like)
  5. Set Program to "adb"
  6. Set Parameters to:
    uninstall name.of.your.package
    
  7. Click OK.

You can test that this new tool works by clicking Tools -> External Tools -> "Uninstall myApp" (Or for older Android Studio versions, Tools->Custom Tools->"Uninstall myApp").

Step 2. Create or edit your test configuration.

  1. Go to Edit Configurations.
  2. Choose the Android Tests configuration that you'd like to modify.
  3. Under "Before launch: ...", click the "+" icon.
  4. Choose "Run External Tool".
  5. In the popup, choose your new tool "Uninstall myApp".
  6. Use the arrows so that the External Tool is above any other commands like Gradle-aware Make".
  7. Click Ok.

Now, when you run this configuration, your app should be uninstalled first, before your tests are run.

Sharing

Newer Android Studio version's have "Store as project file" option (in their "Edit Configurations..." dialog).

But that only saves tool's build-step (second step of above), and to to share "External Tools" itself through repository, see: Share or Export External tools without using jar-file

Upvotes: 13

Jasmeet Singh
Jasmeet Singh

Reputation: 375

This question was asked in '13. We have come a long way since then. Android has jUnit test runner that comes with a cleanup mechanism under test orchestrator.

Check it out here https://developer.android.com/training/testing/junit-runner

Upvotes: 3

Jigish Chawda
Jigish Chawda

Reputation: 2178

Use Annotations eg:

@BeforeEach

and put your clean up code there.

Upvotes: 2

Related Questions