Articles of unit testing

用AndroidAnnotations进行testing可以注入吗?

我还没有find如何做到这一点的例子。 我假设这是不可能的基于这样的例子: @Bean(MyImplementation.class) MyInterface myInterface; 那里注入的课程已经确定了。

为Robolectrictesting导入正确的AssertThat方法

我试图从Robolectric.org的“ 写你的第一个testing”页面运行testing 。 有问题的testing看起来像这样: @Test public void clickingLogin_shouldStartLoginActivity() { WelcomeActivity activity = Robolectric.setupActivity(WelcomeActivity.class); activity.findViewById(R.id.login).performClick(); Intent expectedIntent = new Intent(activity, WelcomeActivity.class); assertThat(shadowOf(activity).getNextStartedActivity()).isEqualTo(expectedIntent); } 我得到这个编译错误: Cannot resolve method 'assertThat(android.content.Intent) 。 我看到导入这个方法的两种可能性是org.hamcrest.MatcherAssert.assertThat和org.junit.Assert.assertThat ,它们都没有一个单参数assertThat方法,正如在Robolectrictesting中使用的那样。 我的应用程序的build.gradle有这些依赖关系: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' testCompile "org.robolectric:robolectric:3.0" testCompile 'junit:junit:4.12' } 这个testing使用了什么框架/库?

我怎样才能让Mockito在androidTest中工作

在我的testing中,我怎样才能嘲笑我写的课程? 这是我的testing代码: import android.support.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @RunWith(AndroidJUnit4.class) public class SampleTest { @Mock Sample mySample; @Before public void setup() { MockitoAnnotations.initMocks(this); } @Test public void shouldMockSample() { verify(mySample, never()).neverCallMe(); } } 样本只是一个虚拟的类。 public class Sample { public void neverCallMe() {} } 我如何摆脱这个错误? […]

如何使用内容parsing器/提供者testing类?

我试图testing查询内容parsing器的类。 我想使用MockContentResolver和模拟query方法。 问题是这个方法是最终的。 我该怎么办? 使用模拟框架? 嘲笑其他课程? 提前致谢。 public class CustomClass { private ContentResolver mContentResolver; public CustomClass(ContentResolver contentResolver) { mContentResolver = contentResolver; } public String getConfig(String key) throws NoSuchFieldException { String value = null; Cursor cursor = getContentResolver().query(…); if (cursor.moveToFirst()) { //… } //.. } }

仅在运行testing时出现DexIndexOverflowException

我可以在我的debugging和发布版本中成功构build和运行我的Android应用程序,没有任何问题。 然而,当我尝试运行我的新unit testing(我从来没有他们之前),我得到了可怕的DexIndexOverflowException 。 我怀疑ProGuard没有在我的unit testing中运行,但它是我的正常debugging和发布buildTypes。 在unit testing运行configuration中运行ProGuard需要做什么? 我通过Gradle文档, ProGuard文档和Android Studio文档search了解这些,但是我什么也没find。

android – 访问testing应用程序资产

我在我的testing应用程序的资产目录中有一个XML文件。 我想从testing类的套件方法访问这个文件。 即, 公共静态TestSuite套房(){InputStreamstream= / /一些代码,返回资产} 任何想法我怎么能做到这一点? 我尝试了Resources.Resources.getSystem()。getAssets(),但没有运气:-(。请帮助。 感谢约瑟

断言ImageView加载了特定的可绘制资源ID

我正在编写一个Robolectricunit testing,我需要声明一个ImageView具有setImageResource(int)的特定资源ID。 我使用fest-android进行断言,但它似乎不包含此断言。 我也尝试从Robolectric的ImageView中获取ShadowImageView ,因为我知道它曾经让你访问这个,但现在已经消失了。 最后,我试图在代码中调用setImageDrawable而不是setImageResource,然后在我的testing中声明如下: assertThat(imageView).hasDrawable(resources.getDrawable(R.drawable.some_drawable)); 但是这也失败了,即使失败的消息清楚地显示了它被加载的相同的Drawable。

Android RecyclerView适配器在unit testing中,项目计数返回0

我试图用AndroidJunit4testingRecyclerView,它是我的testing代码: @Rule public ActivityTestRule<ProductListActivity> rule = new ActivityTestRule<>(ProductListActivity.class); ………………………. …………………….. @Test public void ensureDataIsLoadingOnSuccess() throws Exception { ProductListActivity activity = rule.getActivity(); ……………………… ………… activity.runOnUiThread(new Runnable() { public void run() { activity.displayProducts(asList(product1, product2), 0); } }); assertEquals(2, mAdapter.getItemCount()); assertThat(((ProductAdapter) mAdapter).getItemAtPosition(0),sameInstance(product1)); assertThat(((ProductAdapter) mAdapter).getItemAtPosition(1),sameInstance(product2)); } 这里是我在Activity中的displayProducts()的代码: @Override public void displayProducts(List<Product> products, Integer pageNo) { progressBar.setVisibility(View.GONE); if (pageNo == […]

Androidunit testing的相机预览?

我试图unit testing我的相机预览图像,是否有可能在testing过程中设置静态图像为“相机图像”,或者我应该尝试实现我自己的模拟对象? 我正在寻找像这样的东西: myCameraMock.setImage(image); myCameraDispatcher.setCamera(myCameraMock); (我正在使用opencv相机) 谢谢

分配后在`Robolectric`unit testing中获取活动`ViewDataBinding`字段

我正在写一个Robolectricunit testing,它要求我使用testing下的活动视图数据绑定类( ViewDataBinding ),不幸的是没有运气我坚持它在unit testing MainActiviy类的内部: … ActivityMainBinding binding; // <– this field returns null inside unit test … @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); } … 如果有人已经写了一个类似的要求的testing,请你可以演示一个如何在testing完成之前分配ViewDataBinding的例子。 谢谢! 注意:我正在使用Android Studio 2.2