Искам да прочета от файл в моя инструментален тест:
public class MyTest extends AndroidTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
...
}
}
Опитах следните начини, но нито един от тях не беше успешен: InputStream inputStream = getContext().getAssets().open("myFile");
и File myFile = new File("src/androidTest/myFile");
Опитах да
Resources res = getContext().getResources();
InputStream in = res.openRawResource(R.raw.testfile)
което е предложено в Как да четем файл от директорията src/instrumentTest/resources в Android?, но нямам достъп до R.
Знаете ли как мога да го направя?
Искам да се подиграя на FileInputStream
.
Добавки:
Намерих заобиколно решение за получаване на inputStream:
InputStream inputStream = getInstrumentation()
.getContext()
.getResources()
.openRawResource(com.mypackage.instrumenttest.
R.raw.sifo_cookie_key_json);
Случаят е, че трябва да разширя InstrumentationTestCase
, а не AndroidTestCase
, за да имам достъп до R
Но това, от което се нуждая, е fileInputStream
, а не inputStream, тъй като трябва да имам следното подигравателно връщане:
when(mockContext.openFileInput(FILE_NAME)).thenReturn(fileInputStream);
И openFileInput :http://developer.android.com/reference/android/content/Context.html#openFileInput(java.lang.String) връща fileInputStream
Направих заобиколно решение за конвертиране на InputStream във fileInputStream:
final File file = File.createTempFile("file", ".txt");
convertStreamToFile(inputStream, file);
FileInputStream fileInputStream = new FileInputStream(file);
Но това не е хубаво решение и се чудя дали мога да получа FileInputStream
вместо InputStream
?
Получих този проблем с проекта Yii 1.1.x и почти полудях:
Първо се уверете, че имате
инсталиран и рестартирайте apache
or:
Подробна грешка беше, че библиотеката с база данни не може да бъде намерена.
Моето решение беше свързано с кеширане:
ако ConnectionID не е зададен, db кеширането по подразбиране е към mysqli база данни в /protected/data директория, която не може да бъде достъпна, ако mysqli драйверът не е инсталиран в системата (често срещан проблем със специални сървъри, DO droplets, xampp/wamp...)
или можете да деактивирате db кеширането и вместо това да активирате fileCache.
- person Jared Burrows   schedule 10.07.2015