Articles of unit testing

我怎样才能从testing代码旋转的Android模拟器?

我想在横向和纵向模式下testing我的应用程序的不同行为。 我有一个android.test.InstrumentationTestCase的子类,它能够以纵向模式testing我的应用程序的行为,但是如果我(手动)在运行testing之前将模拟器放到横向上,它将会失败。 这很好 – 景观行为不应该通过肖像testing – 我知道如何检查从我的testing代码的方向,所以我可以避免testing失败 – 但我想要做的是(从testing代码)把仿真器进入每个testing的正确状态。 我怎样才能做到这一点?

Android ApplicationTestCase使用MockContext

我是新来的Androidtesting,我想创build一个ApplicationTestCase使用MockContext(其实我试图使用重命名模拟上下文)。 但我不断收到AssertionFailedError。 这是我迄今为止的基本代码: AppTests.java package com.myProject.test; import android.test.ApplicationTestCase; public class AppTests extends ApplicationTestCase<MyApplication> { public AppTests() { super(MyApplication.class); } @Override protected void setUp() throws Exception { final RenamingMockContext mockContext = new RenamingMockContext(getContext()); setContext(mockContext); createApplication(); } } MyApplication.java package com.myProject.test; import android.app.Application; public class MyApplication extends Application { public MyApplication() { } @Override public void onCreate() […]

使用Espresso进行相机操作UItesting

我需要使用espressotesting项目自动执行我的UItesting以便进行以下操作。 操作: 点击打开我的手机相机的button。 捕获图像,并保存在SD卡存储的图像。 完成后还要在屏幕上更新小图像视图。 应用程序工作正常,但与所有其他操作和类似的上述操作,它成为一个耗时的过程,以手动testing一次又一次。

与Mockito的Android仪器testing

我试图使用Android仪器testingMockito框架,但我不能正确初始化它。 我有以下testing类: class MainKontorTest extends ActivityInstrumentationTestCase2<MainActivity> { @Mock Dependency bar; @Override public void setUp() { super.setUp(); MockitoAnnotations.initMocks(this); } public void testSomething() { Foo foo = new Foo(bar); } } 当我尝试运行这个testing时,我得到以下错误和stacktrace: java.lang.ExceptionInInitializerError org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)at org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)at org。 mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49)at org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)at org.mockito.internal.util.MockUtil。在org.mockito.internal.MockAnnotationProcessor的org.mockito.Mockito.Mock(Mockito.java:1285)上的org.mockito.internal.MockitoCore.mock(MockitoCore.java:59)上的createMock(MockUtil.java:33) (org.mockito.internal.configuration.DefaultAnnotationEngine.createMockFor(DefaultAnnotationEngine.java:43)org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)处理(MockAnnotationProcessor.java:33)。 mockito.internal.configuration.DefaultAnnotationEngine.process(DefaultAnnotationEn (org.mockito.java:66)org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:71)org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:55)at org.mockito.MockitoAnnotations .initMocks(MockitoAnnotations.java:108)at junit.framework.TestCase.runBare(TestCase.java:132)at junit.framework。org.arkadiy.moduledeleationsample.ui.main.MainKontorTest.setUp(MainKontorTest.java:20)。 TestResult $ 1.protect(TestResult.java:115)at android.support.test.internal.runner.junit3.AndroidTestResult.runProtected(AndroidTestResult.java:77)at junit.framework.TestResult.run(TestResult.java:118)at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:55),位于android.support.test.internal.runner.junit3的junit.framework.TestCase.run(TestCase.java:124)。 NonLeakyTestSuite $ NonLeakyTest.run(NonLeakyTestSuite.java:63)在junit.framework.TestSuite.runTest(TestSuite.java:24 3)在android.support.test.internal.runner的android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103)上的junit.framework.TestSuite.run(TestSuite.java:238) .org.junit.runners.Suite.runChild(Suite.java)中的。 […]

unit testing的改装2 api呼叫与Mockito

我需要一些关于如何嘲笑restapi的build议。 我的应用程序是在MVP架构。 我的API接口: public interface MyAPI { @GET("{cmd}/{userName}/{password}") Observable<Response> login( @Path("cmd") String cmd, @Path("userName") String userName, @Path("password") String password ); 我的服务: public class MyService implements IService { private static MyService mInstance = new MyService(); private MyAPI mApi; public static MyService getInstance() { return mInstance; } private MyService() { OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); httpClientBuilder.connectTimeout(Config.DEFAULT_TIMEOUT, TimeUnit.SECONDS); […]

创build一个模拟的AlarmManager进行testing

我想能够testing一些代码,添加pending intents到警报pipe理器,但是我可以创build自己的mock context从getSystemService()返回它我不能创build我自己的报警pipe理器的子类,因为它有一个私人构造函数。 会有另一个(更好的?)的方式,让我能够testing我的代码正确地添加(或不)基于我的testing前提条件的警报?

使用ActivityUnitTestCase和PreferenceManager来testingAndroid

我有一个Activity我是unit testing。 我想ActivitytestingActivity ,所以ActivityUnitTestCase非常适合我的目的。 我的Activity的onCreate方法使用一个存储在首选项中的值。 我想在我的testing案例中为此设置一个值。 问题是,我不知道如何提前设置Preference 。 ActivityUnitTestCase没有getContext()方法, getActivity()应返回context ,直到调用startActivity()为空。 这不是一个选项,因为调用startActivity会触发onCreate方法,这是首选项代码所在的地方。 关于如何获得我可以用来操纵我的unit testing的偏好的context任何想法?

带有ActionBarActivity的ActivityUnitTestCase的NameNotFoundException

我正在尝试为现有的应用程序编写一些testing。 我想提供一个testing应用程序类的testing,我跟着这里的例子,因为我也使用Dagger的DI。 但是,如果被测活动是一个ActionBarActivity,我得到以下exception: java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:282) at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:116) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at mypackage.view.activity.MyActivity.onCreate(MyActivity.java:68) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at mypackage.MyActivityTest.test(MyActivityTest.java:89) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) Caused by: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:242) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:298) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:279) … 21 more 我的testing类如下所示: public class […]

有没有办法使用ActivityInstrumentationTestCase2添加附加到活动

我正在使用ActivityInstrumentationTestCase2进行unit testing。 是否有一种方法来添加额外的活动,所以当活动到这样的一条线 Bundle extras = getIntent().getExtras(); 它会返回额外的?

在Android中testing自定义的ContentProvider

我已经写了我的内容提供者应该包装访问SqlLite数据库中的2个表。 现在我想写一些testing用例,但是我从来没有这样做过。 在阅读开发者指南的章节后,我必须说我没有设法做任何testing。 以下是我的代码到目前为止。 这是testing项目中唯一对应于我的主项目的类。 当我在Eclipse中执行它时,模拟器正确启动,软件包被安装,但是它不运行testing: testing运行失败:testing运行不完整。 预期1个testing,收到0 这里是testing类: public class ArticleProviderTest extends ProviderTestCase2<ArticleProvider> { static final Uri[] validUris = new Uri[] { Articles.CONTENT_URI, Pictures.CONTENT_URI, Pictures.getContentUriForArticleId(1) }; public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) { super(providerClass, providerAuthority); } @Override protected void setUp() throws Exception { super.setUp(); } public void testQuery() { ContentProvider provider = getProvider(); for (Uri […]