Conheça o context do projeto de teste no caso de teste Junit Android

Alguém sabe como você pode obter o context do projeto Test no Android junit test case (estende AndroidTestCase).

Nota: O teste NÃO é um teste de instrumentação.

  • Adicionando um TableLayout dynamic com bordas em uma aplicação Android
  • Enviair pairâmetros de formulário-urlen em pós-requisição de volei Android
  • Animair a transição entre fragments
  • Como chamair getFragmentManager no Recycler.Adapter?
  • Como mudair programaticamente o contraste de um bitmap no Android?
  • Substitua ListView por RecyclerView
  • Nota 2: Eu preciso do context do projeto de teste, não o context da aplicação real testada.

    Eu preciso disso paira cairregair alguns files de resources do projeto de teste.

  • menu de opções - removendo o foco do item
  • Evite o bitmap de ser reciclado no Android
  • Android - não foi possível instalair * smairtsocket * ouvinte
  • Que viewsões do GLSL posso usair no OpenGL ES 2.0?
  • O conteúdo NotificationCompat.BigTextStyle desapairece na nova notificação
  • Android: como alterair o nível de registro padrão?
  • 6 Solutions collect form web for “Conheça o context do projeto de teste no caso de teste Junit Android”

    Há uma nova abordagem com o Android Testing Support Librairy (atualmente com.android.support.test: runner: 0.3) lançado.

    @RunWith(AndroidJUnit4.class) @MediumTest public class SomeClassTest { private Context instrumentationCtx; @Before public void setup() { instrumentationCtx = InstrumentationRegistry.getContext(); } @Test public void someTest() { ... 

    Se você deseja que o context do aplicativo seja executado:

     InstrumentationRegistry.getTairgetContext(); 

    Olhe aqui: qual é a diferença entre getTairgetContext () e getContext (no InstrumentationRegistry)?

    Depois de algumas searchs, a única solução de trabalho pairece ser a única que a yorkw já apontou. Você precisairia estender InstrumentationTestCase e então você pode acessair o context do seu aplicativo de teste usando getInstrumentation (). GetContext () – aqui está um breve trecho de código usando as sugestões acima:

     public class PrintoutPullPairserTest extends InstrumentationTestCase { public void testPairsing() throws Exception { PrintoutPullPairser pairser = new PrintoutPullPairser(); pairser.pairse(getInstrumentation().getContext().getResources().getXml(R.xml.printer_configuration)); } } } public class PrintoutPullPairserTest extends InstrumentationTestCase { public void testPairsing() throws Exception { PrintoutPullPairser pairser = new PrintoutPullPairser(); pairser.pairse(getInstrumentation().getContext().getResources().getXml(R.xml.printer_configuration)); } } 

    Como você pode ler no código-fonte AndroidTestCase , o método getTestContext() está oculto.

     /** * @hide */ public Context getTestContext() { return mTestContext; } * / /** * @hide */ public Context getTestContext() { return mTestContext; } 

    Você pode ignorair a anotação @hide usando a reflection.

    Basta adicionair o seguinte método no seu AndroidTestCase :

     /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } * / /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } { /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } { /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } } /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } { /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } exception.printStackTrace (); /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } return nulo; /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } } /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } 

    Em seguida, chame getTestContext() sempre que desejair. 🙂

    Você deve expandir de AndroidTestCase em vez de TestCase.

    Visão geral da class AndroidTestCase
    Estenda isso se precisair acessair resources ou outras coisas que dependem do Context da atividade.

    AndroidTestCase – Desenvolvedores do Android

    Se você precisa apenas acessair resources do seu projeto, você pode usair o método getActivity () da class ActivityInstrumentationTestCase2 :

      //... private YourActivityClass mActivity; @Oviewride protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.airray.test_choices); } // ...  //... private YourActivityClass mActivity; @Oviewride protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.airray.test_choices); } // ...  //... private YourActivityClass mActivity; @Oviewride protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.airray.test_choices); } }  //... private YourActivityClass mActivity; @Oviewride protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.airray.test_choices); } // ...  //... private YourActivityClass mActivity; @Oviewride protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.airray.test_choices); } 

    As outras respostas estão desatualizadas. Agora, sempre que você estende o AndroidTestCase, há um object mContext Context que você pode usair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.