Articles of unit testing

Android Studio Unit Test中的Assets文件夹

我有一个Gradle项目,具有以下结构: project/ src/ androidTest/ java/ main/ java/ res/ AndroidManifest.xml build.gradle 现在我想添加一个使用资源(“原始”或“资产”)的unit testing。 我将我的资源放入project/androidTest/assets/test_file并使用getContext().getResources().getAssets().open(“test_file”);访问它getContext().getResources().getAssets().open(“test_file”); (在AndroidTestCase )。 但是,这给了我一个FileNotFoundException 。 我怎样才能解决这个问题?

如何在Androidunit testing中读取仅测试文件

对于我的Android应用程序,我正在编写需要读取一些文件的unit testing。 由于这些是仅测试文件,我不希望它们在我的res文件夹中,因为我不希望它们最终出现在我的最终.apk文件中。 我想做一些类似于这个问题但使用新添加的(在Gradle 1.1中) unit testing支持 (而不是仪器测试)。 我的项目结构如下: /app /src /main /java/my.module/myClass.java /res/production_resources_go_here /test /java/my.module/myClassTest.java /resources/testFile.txt 我的myClassTest测试应该是什么样才能成功读取testFile.txt ?

如何测试菜单

我需要通过unit testing来覆盖菜单function,但是我很难获得Menu对象。 以下测试用例失败(mMenu为空): sendKeys(KeyEvent.KEYCODE_MENU); mMenu = (Menu) mActivity.findViewById(com.###.###.R.id.main_menu); assertNotNull(mMenu); 请指教。 谢谢。

使用AndroidJUnitRunner运行时,ActivityUnitTestCase会抛出RuntimeException

我正在尝试将Espresso 2.0的AndoridJUnitRunner与ActivityUnitTestCase集成。 但是,当startActivity()尝试初始化mMockParent = new MockParent()时,我的测试会崩溃。 这是我做的: 使用Intellij 14 CE创建一个新项目,并对build.gradle进行一些更改。 android{ defaultConfig { applicationId “com.noob.testing” minSdkVersion 9 targetSdkVersion 21 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.android.support:appcompat-v7:21.0.+’ androidTestCompile(‘org.mockito:mockito-core:1.9.5’) androidTestCompile(‘com.google.dexmaker:dexmaker:1.2’) androidTestCompile(‘com.google.dexmaker:dexmaker-mockito:1.2’) androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.0’) androidTestCompile(‘com.android.support.test:testing-support-lib:0.1’) } 编写JUnit4风格的unit testing。 @RunWith(AndroidJUnit4.class) public class MainActivityJUnit4Test […]

完全自定义的Shadow对象如何在Robolectric中工作?

如果我为我的Activity编写一个自定义Shadow,并使用RobolectricTestRunner注册它,那么框架是否会在我的自定义Shadow启动时拦截Activity? 谢谢。

Android SQLite数据库unit testing

我是Android应用程序开发的新手,我刚做了一个笔记应用程序。 我想为数据库的insertNote,readNote和updateNote方法进行unit testing。 我该怎么做? 这是我的数据库的代码。 谢谢。 public class DatabaseManager extends SQLiteOpenHelper { public static final String Database_Name = “Notes Database”; public static final String Table_Name = “notes”; public static final String Column_id = “textId”; public static final String Column_title = “textTitle”; public static final String Column_body = “textBody”; public DatabaseManager(Context context){ super(context, Database_Name, null, 1); […]

Uri.parse()总是在unit testing中返回null

这个简单的unit testing总是通过,我无法弄清楚原因。 @RunWith(JUnit4.class) class SampleTest { @Test testSomething() { Uri uri = Uri.parse(“myapp://home/payments”); assertTrue(uri == null); } } 到目前为止我尝试使用的是“传统”URI( http://example.com ),但uri也是null 。

在Android中测试非活动类

我知道如何在Android中使用JUnit 4测试Activity类,但我无法理解如何测试非活动类(不扩展Activity,ListActivity或其他一些Activity类,但使用一些Android API)。 请帮助我这方面。

在我的测试中我需要Robolectric和Mockito,每个人都提出自己的TestRunner

在我的测试中我需要Robolectric和Mockito,每个人都提出自己的TestRunner,我该怎么办? 我有这个代码: @RunWith(MockitoJUnitRunner.class) @EBean public class LoginPresenterTest { @Bean LoginPresenter loginPresenter; @Mock private LoginView loginView; @AfterInject void initLoginPresenter() { loginPresenter.setLoginView(loginView); } @Test public void whenUserNameIsEmptyShowErrorOnLoginClicked() throws Exception { when(loginView.getUserName()).thenReturn(“”); when(loginView.getPassword()).thenReturn(“asdasd”); loginPresenter.onLoginClicked(); verify(loginView).setEmailFieldErrorMessage(); } } 问题是AndroidAnnotations没有注入依赖项,我在尝试使用LoginPresenter时获得了NPE 有人告诉我使用LoginPresenter_构造函数,以便我可以通过这种方式强制注入依赖项: LoginPresenter loginPresenter = LoginPresenter_.getInstance_(context); 为了获得对上下文的访问,我不得不从unit testing切换到Android Instrumentation Tests并执行getInstrumentation().getTargetContext()但我想要unit testing,而不是Instrumentation测试。 所以另一个人告诉我使用Robolectric – 它应该能够为我提供应用程序上下文。 然而,当我看到Robolectric入门页面时,它说 @RunWith(RobolectricGradleTestRunner.class) 这将与我目前的@RunWith注释冲突,所以我该怎么办?

使用Robolectric测试AsyncTaskLoaders

有没有人有幸为Robolectric的AsyncTaskLoaders编写unit testing? 我为AsyncTask尝试了此示例的修改版本,但它没有表现出相同的行为。 特别是onLoadFinished永远不会被调用。 有没有可行的例子用于测试Robolectric的装载机?