I am trying to create some fake objects based on a .json file. So, the architecture of my project looks like this:
- MyProject - app ---- src -------- androidTest ------------ assets ---------------- FirstObject.json ---------------- SecondObject.json ------------ java -------- main -------- test
I am doing testing with Espresso and have several .json files in the assets folder.
My test class is as follows:
@RunWith(AndroidJUnit4.class) public class LocatingActivityTest { @Rule public ActivityTestRule<BookingActivity> mActivityTestRule = new ActivityTestRule<>(BookingActivity.class); private BookingActivity mBookingActivity; @Before public void setup() { mBookingActivity = mActivityTestRule.getActivity(); } @Test public void viewsMustBeVisible() { onView(withId(R.id.fab_booking)).perform(click()); onView(withId(R.id.booking_book_now)).check(matches(not(isEnabled()))); mBookingActivity.setTestBooking(BookingTest.getStandardFlight(), MyServiceProvider.getServices1(mBookingActivity),
The problem is in my MyServiceProvider class:
public final class MyServiceProvider { public static List<FlightType> getServices1(Context context) { try { InputStream inputStream = context.getAssets().open("FlightTypes.json"); String jsonString = read(inputStream); Log.e("XXX", "getServices1() => " + jsonString); Type listType = new TypeToken<List<FlightType>>(){}.getType(); List<FlightType> flightTypeList = new Gson().fromJson(jsonString, listType); return flightTypeList; } catch (IOException e) { e.printStackTrace(); } return null; } private static String read(InputStream inputStream) throws IOException { StringWriter writer = new StringWriter(); IOUtils.copy(inputStream, writer, "UTF-8"); return writer.toString(); } . . . }
For some reason, InputStream inputStream = context.getAssets().open("FlightTypes.json"); cannot open json file and exception exception. This is my journal:
02-17 21:00:58.984 5686-5706/com.xxx.xxx W/System.err: java.io.FileNotFoundException: FlightTypes.json 02-17 21:00:58.984 5686-5706/com.xxx.xxx W/System.err: at android.content.res.AssetManager.openAsset(Native Method) 02-17 21:00:58.984 5686-5706/com.xxx.xxx W/System.err: at android.content.res.AssetManager.open(AssetManager.java:313) 02-17 21:00:58.984 5686-5706/com.xxx.xxx W/System.err: at android.content.res.AssetManager.open(AssetManager.java:287) 02-17 21:00:58.984 5686-5706/com.xxx.xxx W/System.err: at com.xxx.xxx.utility.MyServiceProvider.getServices1(MyServiceProvider.java:31)
Any suggestion will be appreciated. Thanks.
source share