Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android test fixtures

I am working on an android app and I have created a new test project for unit tests. Where's recommended to store the test fixtures (like xml files and the like) and what's the proper way to access it ?

like image 496
hyperboreean Avatar asked Apr 11 '12 18:04

hyperboreean


2 Answers

It depends if you really mean unit test or instrumented tests (like using espresso and stuff)...

Unit tests:

  1. Put your fixtures in src/test/resources (so e.g. src/test/resources/fixture.json)
  2. Access them from your test classes e.g. using:

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("fixture.json")

Instrumented tests:

  1. Put your fixtures in src/androidTest/assets/ (so e.g. src/androidTest/assets/fixture.json)
  2. Access them from your test classes e.g. using:

InputStream is = InstrumentationRegistry.getContext().getResources().getAssets().open("fixture.json")

Here are some examples of how you can convert InputStream to String.

Here's a pretty good post describing different cases.


P.S. I know this question is 6+ years old... answering for any future searches.

like image 190
Bartek Lipinski Avatar answered Oct 12 '22 10:10

Bartek Lipinski


After some searching I found there is no one proper way to store fixtures in Android (also not so much in java either).

Fixtures are a way to provide easy and consistent data to be passed into test cases. Creating .java classes with static methods that return objects is one way to go.

Example:

public class Pojos {

    public static List<TaskListItem> taskListItems() {
        return Arrays.asList(
                new TaskListItem("one"),
                new TaskListItem("two"),
                new TaskListItem("three")
        );
    }
}
like image 23
Vedant Agarwala Avatar answered Oct 12 '22 12:10

Vedant Agarwala