[android-developers] Re: ServiceTestCase and Contexts
I am getting this error: android.content.Context.getMainLooper()' on a null object reference When calling new GoogleApiClient.Builder(getApplication()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); On Tuesday, February 8, 2011 at 10:54:05 AM UTC-5, nate wrote: Thanks for the response. The assets that I needed for the test project were specifically built for testing and we could not distribute them in the assets of our app (we are keeping the app footprint small), but the workaround I posted above worked fine to get the assets from the test project. On Feb 4, 5:04 pm, A. Elk lancaster.dambust...@gmail.com wrote: Hmmm. ServiceTestCase.getSystemContext() returns the context of the test package. ServiceTestCase.getApplication() gets the Application instance in use by the service under test. It's probably better to use that Application object to look at the assets you want. When you wrote getContext(), I didn't understand which class you were talking about. In a test case class, calling getContext() will usually default to AndroidTestCase.getContext(), which will give you the context of the test package. In an instrumented test case like ActivityInstrumentationTestCase2, you have an Instrumentation object, so you can call getTargetContext() on that object to get the context of the instrumented component under test. To come back to the original problem, which assets do you need to use? Could you build them into your test package as well as the application under test, instead of trying to get them from the app on the fly? On Feb 4, 11:20 am, nate nat...@cisco.com wrote: OK, I found a solution: I created a context to our test package and was able to access the assets: mTestAppContext = getContext().createPackageContext(com.blah.test, Context.CONTEXT_IGNORE_SECURITY); Just in case anyone else needs a workaround. On Feb 4, 10:36 am, nate nat...@cisco.com wrote: Also, i put the test assets in the target project's directory and was able to access them with: getSystemContext().getAssets().list(.) On Feb 4, 10:31 am, nate nroy...@gmail.com wrote: I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit
[android-developers] Re: ServiceTestCase and Contexts
Thanks for the response. The assets that I needed for the test project were specifically built for testing and we could not distribute them in the assets of our app (we are keeping the app footprint small), but the workaround I posted above worked fine to get the assets from the test project. On Feb 4, 5:04 pm, A. Elk lancaster.dambust...@gmail.com wrote: Hmmm. ServiceTestCase.getSystemContext() returns the context of the test package. ServiceTestCase.getApplication() gets the Application instance in use by the service under test. It's probably better to use that Application object to look at the assets you want. When you wrote getContext(), I didn't understand which class you were talking about. In a test case class, calling getContext() will usually default to AndroidTestCase.getContext(), which will give you the context of the test package. In an instrumented test case like ActivityInstrumentationTestCase2, you have an Instrumentation object, so you can call getTargetContext() on that object to get the context of the instrumented component under test. To come back to the original problem, which assets do you need to use? Could you build them into your test package as well as the application under test, instead of trying to get them from the app on the fly? On Feb 4, 11:20 am, nate nat...@cisco.com wrote: OK, I found a solution: I created a context to our test package and was able to access the assets: mTestAppContext = getContext().createPackageContext(com.blah.test, Context.CONTEXT_IGNORE_SECURITY); Just in case anyone else needs a workaround. On Feb 4, 10:36 am, nate nat...@cisco.com wrote: Also, i put the test assets in the target project's directory and was able to access them with: getSystemContext().getAssets().list(.) On Feb 4, 10:31 am, nate nroy...@gmail.com wrote: I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
[android-developers] Re: ServiceTestCase and Contexts
I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
[android-developers] Re: ServiceTestCase and Contexts
Also, i put the test assets in the target project's directory and was able to access them with: getSystemContext().getAssets().list(.) On Feb 4, 10:31 am, nate nroy...@gmail.com wrote: I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
[android-developers] Re: ServiceTestCase and Contexts
OK, I found a solution: I created a context to our test package and was able to access the assets: mTestAppContext = getContext().createPackageContext(com.blah.test, Context.CONTEXT_IGNORE_SECURITY); Just in case anyone else needs a workaround. On Feb 4, 10:36 am, nate nat...@cisco.com wrote: Also, i put the test assets in the target project's directory and was able to access them with: getSystemContext().getAssets().list(.) On Feb 4, 10:31 am, nate nroy...@gmail.com wrote: I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
[android-developers] Re: ServiceTestCase and Contexts
Hmmm. ServiceTestCase.getSystemContext() returns the context of the test package. ServiceTestCase.getApplication() gets the Application instance in use by the service under test. It's probably better to use that Application object to look at the assets you want. When you wrote getContext(), I didn't understand which class you were talking about. In a test case class, calling getContext() will usually default to AndroidTestCase.getContext(), which will give you the context of the test package. In an instrumented test case like ActivityInstrumentationTestCase2, you have an Instrumentation object, so you can call getTargetContext() on that object to get the context of the instrumented component under test. To come back to the original problem, which assets do you need to use? Could you build them into your test package as well as the application under test, instead of trying to get them from the app on the fly? On Feb 4, 11:20 am, nate nat...@cisco.com wrote: OK, I found a solution: I created a context to our test package and was able to access the assets: mTestAppContext = getContext().createPackageContext(com.blah.test, Context.CONTEXT_IGNORE_SECURITY); Just in case anyone else needs a workaround. On Feb 4, 10:36 am, nate nat...@cisco.com wrote: Also, i put the test assets in the target project's directory and was able to access them with: getSystemContext().getAssets().list(.) On Feb 4, 10:31 am, nate nroy...@gmail.com wrote: I checked my setUp() method and I do call super.setUp() as the first line. The reason I believe the contexts are the same are two-fold: I tried both: getSystemContext().getAssets().list(.) getContext().getAssets().open(.); and neither of them listed any files. The second reason is that I read the code for ServiceTestCase and saw that the getSystemContext() is just the same context retrieved by getContext(), but it's grabbed before any tests have a chance to mess with it(according to the comment in the code): @Override protected void setUp() throws Exception { super.setUp(); // get the real context, before the individual tests have a chance to muck with it mSystemContext = getContext(); } So it would seem that getting the context to the app the testcase is in is not possible with the ServiceTestCase, unless I am missing something. On Feb 3, 9:15 pm, A. Elk lancaster.dambust...@gmail.com wrote: What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
[android-developers] Re: ServiceTestCase and Contexts
What leads you to believe that both Context objects contain the same information? If you do a getSystemContext() you should get the context that's stored during setUp(). The only thing that might screw this up is if you overrode setUp() but forgot to call super.setUp() first. On Feb 2, 2:08 pm, nate nroy...@gmail.com wrote: Hey Everyone, I don't know if I am doing something wrong here, but when I am trying to use the ServiceTestCase class to test my Service, I cannot get a context which points to the test project. getContext() and getSystemContext() both seem to point to the target project's context. The reason I need the context of my test app is that i have some assets which i need to be able to use in order to test the service in question. Does anyone know of a workaround or could point me at a way of resolving this? (i looked through the source of ServiceTestCase and didn't see another way) Something similar to instrumentationtestcase's getInstrumentation.getContext() is what I am looking for. Thanks. -- You received this message because you are subscribed to the Google Groups Android Developers group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en