2016-10-15 2 views
0

Я пытаюсь создать тестовый пример, чтобы проверить один из моих статических методов, который принимает AssetManager в качестве параметра. Тем не менее, у меня возникли проблемы с получением класса AssetManager, потому что каждый он-лайн блог говорит мне использовать классы, которые все устарели в sdk версии 24. Я даже пытался использовать класс Mockito, чтобы издеваться над моей основной деятельностью (не уверен, что если это предназначенный для использования), и который возвратил нулевой AssetsManager.Android SDK версия 24 - проблема с возвратом AssetManager

Как я могу получить AssetsManager для моего проекта в своем модуле Test?

+0

Mockito обычно ассоциируется с модульными испытаниями в Android. Вы пытаетесь написать модульные тесты ('test /' каталог в Android Studio, запустить за пределами Android на JVM вашей машины разработки) или контрольно-измерительные тесты ('androidTest /' каталог в Android Studio, работающие на Android-устройстве или эмуляторе) ? – CommonsWare

+0

@commonsWare Я только пытался писать модульные тесты, я ценю ответ! Ответ ниже работал для меня. Я работаю из тестового каталога. –

ответ

0

Ваш тест с использованием AssetManager должен быть помещен в androidTests (как указано в комментариях). Затем вы можете сделать что-то вроде этого

@RunWith(AndroidJUnit4.class) 
public class AssetManagerTests { 
    private Instrumentation mInstrumentation; 

    @Before 
    public void setUp() throws Exception { 
     mInstrumentation = InstrumentationRegistry.getInstrumentation(); 
    } 

    @Test 
    public final void testAssets() throws IOException { 
     final AssetManager assetManager = mInstrumentation.getTargetContext().getAssets(); 
     assetManager.open("someappfile"); 
    } 
} 

В этом случае тест открытия файла из assets, но вы можете делать все, что вы хотите. Обратите внимание, что имя файла равно someappfile, чтобы подчеркнуть, что тест получает доступ к активам приложений вместо тестовых активов.