Articles of junit4

Android:Robolectric不支持API级别1

这是我的基础测试类: @RunWith(RobolectricTestRunner.class) public class MainActivityTest { @Before public void setup() { //do whatever is necessary before every test } @Test public void testActivityFound() { Activity activity = Robolectric.buildActivity(MainActivity.class).create().get(); Assert.assertNotNull(activity); } } 当我在Android Studio下使用终端窗口执行我的测试时,出现此错误: java.lang.UnsupportedOperationException: Robolectric does not support API level 1, sorry! at org.robolectric.SdkConfig.(SdkConfig.java:24) at org.robolectric.RobolectricTestRunner.pickSdkVersion(RobolectricTestRunner.java:320) at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.java:296) at org.robolectric.RobolectricTestRunner.access$300(RobolectricTestRunner.java:61) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:202) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at […]

需要帮助使用Mockito和JUnit4编写unit testing

需要帮助使用Mockito和JUnit4为以下代码编写unit testing, public class MyFragmentPresenterImpl { public Boolean isValid(String value) { return !(TextUtils.isEmpty(value)); } } 我试过以下方法:MyFragmentPresenter mMyFragmentPresenter @Before public void setup(){ mMyFragmentPresenter=new MyFragmentPresenterImpl(); } @Test public void testEmptyValue() throws Exception { String value=null; assertFalse(mMyFragmentPresenter.isValid(value)); } 但它返回以下exception, java.lang.RuntimeException:未模拟android.text.TextUtils中的方法isEmpty。 有关详细信息,请参阅http://g.co/androidstudio/not-mocked 。 在android.text.TextUtils.isEmpty(TextUtils.java)….

用gradle测试一个android项目的junit测试

我试图让测试(junit和robolectric)在Android项目中工作,但我完全陷入困境。 我的主要问题是我用gradlefind的所有测试都以某种方式拉入了java插件然后我得到了这个错误: The ‘java’ plugin has been applied, but it is not compatible with the Android plugins. 我目前看到的唯一出路是分成测试和应用项目 – 但我想避免这种情况。 任何示例/提示都将受到高度赞赏! 在官方文档中没有提到unit testing – 只有仪器测试 – 但我希望unit testing能够快速获得结果。

Espresso UI测试无法识别onView()

我花了一整天用Espresso设置Junit4仪器测试,但似乎无法完成最后一步。 无论我做什么,它都无法识别onView()方法。 我已经尝试了多个SDK / support-lib版本,到目前为止还没有。 我已经浏览了所有谷歌设置指南和许多stackoverflowpost,转到这里作为我的最后希望。 Gradle版本: com.android.tools.build:gradle:1.5.0 : com.android.tools.build:gradle:1.5.0 : com.android.tools.build:gradle:1.5.0 Gradle文件: apply plugin: ‘com.android.application’ apply plugin: ‘com.google.gms.google-services’ android { compileSdkVersion 23 buildToolsVersion “23.0.2” useLibrary ‘org.apache.http.legacy’ defaultConfig { applicationId “lv.my.android” minSdkVersion 9 targetSdkVersion 22 testApplicationId “lv.my.android.tests” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } packagingOptions { exclude ‘LICENSE.txt’ exclude ‘META-INF/DEPENDENCIES’ exclude ‘META-INF/LICENSE’ exclude ‘META-INF/NOTICE’ } compileOptions { sourceCompatibility = […]

在设备操作testing期间,“animation师只能在Looper线程上运行”

这是我的testing代码: @RunWith(AndroidJUnit4.class) @SmallTest public class WelcomeActivityTests extends BaseTest { ApplicationController applicationController; @Rule public ActivityTestRule<WelcomeActivity> activityTestRule = new ActivityTestRule<>(WelcomeActivity.class); ArgumentCaptor<Callback> argumentCaptor; @Before @Override public void setUp() { applicationController = (ApplicationController) InstrumentationRegistry.getTargetContext().getApplicationContext(); applicationController.setMockMode(true); argumentCaptor = ArgumentCaptor.forClass(Callback.class); super.setUp(); } @Test public void testLogin() throws InterruptedException { onView(withId(R.id.btnLogInW)).perform(click()); onView(withId(R.id.email)).perform(typeText("good.email@example.com")); onView(withId(R.id.passL)).perform(typeText("strong.password")); onView(withId(R.id.btnLogInL)).perform(click()); User user = new User(); user.first_name = "Fake […]

在Android上使用EspressotestingEditText错误

我想testing一个EditText字段是否有错误(使用editText.setError(“Can not be blank!”))。 我用新的AndroidStudio 2.2function创build了一个Espressotesting用例来loggingEspressotesting。 所以代码几乎是自动生成的。 但现在它只检查是否显示editText。 @RunWith(AndroidJUnit4.class) public class CreateNoteActivityTitleCannotBeBlank { @Rule public ActivityTestRule<CreateNoteActivity> mActivityTestRule = new ActivityTestRule<>(CreateNoteActivity.class); @Test public void createNoteActivityTitleCannotBeBlank() { ViewInteraction floatingActionButton = onView( allOf(withId(R.id.fab_add_note), withParent(allOf(withId(R.id.activity_create_note), withParent(withId(android.R.id.content)))), isDisplayed())); floatingActionButton.perform(click()); ViewInteraction editText = onView( allOf(withId(R.id.tiet_note_title), childAtPosition( childAtPosition( withId(R.id.til_title), 0), 0), isDisplayed())); editText.check(matches(isDisplayed())); } private static Matcher<View> childAtPosition( final Matcher<View> parentMatcher, final […]

调用Robolectric.buildActivity()时资源$ NotFoundException

我在Android Studio中使用Robolectric 3.0 RC3进行unit testing。 每次运行testing时都会收到一个ResourceNotFoundExceptionexception。 请帮我解决这个问题。 的build.gradle dependencies { testCompile 'junit:junit:4.12' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.0.0' testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'org.robolectric:robolectric:3.0-rc3' compile 'com.ibm.icu:icu4j:53.1' } testing类 @Before public void setUp() throws Exception { activity = Robolectric.buildActivity(MainActivity.class).create().get(); } @Test public void pressingTheButtonShouldStartTheListActivity() throws Exception { //Something to test } 所以,每当Robolectric.buildActivity()我得到Resources$NotFoundException 。 资源#0x7f040016指向R.layout.activity_main (xml)。 跟踪id跟踪堆栈 – […]

Android:unit testing一个服务

我目前正在尝试使用TDD编写Android应用程序。 我已经被赋予了编写一个在应用程序中非常重要的服务的任务。 至于这个原因,我试图写一个适当的testing服务。 Android指南声明如下: “testing内容”主题列出了testingAndroid组件的一般注意事项。 以下是testing服务的一些具体指导原则: 确保调用onCreate()以响应Context.startService()或Context.bindService()。 同样,你应该确保onDestroy()被调用来响应Context.stopService(),Context.unbindService(),stopSelf()或stopSelfResult()。 testing您的服务是否正确处理来自Context.startService()的多个调用。 只有第一个调用会触发Service.onCreate(),但是所有的调用都会触发对Service.onStartCommand()的调用。 另外,请记住,startService()调用不会嵌套,因此对Context.stopService()或Service.stopSelf()(但不是stopSelf(int))的单个调用将停止服务。 您应该testing您的服务在正确的点停止。 testing你的服务实现的任何业务逻辑。 业务逻辑包括检查无效值,财务和算术计算等等。 来源:服务testing| Android开发者 我还没有看到这些生命周期方法的正确testing,多次调用Context.startService()等。我试图找出这一点,但我目前在亏损。 我试图用ServiceTestCase类testing服务: import java.util.List; import CoreManagerService; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Before; import org.junit.Test; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.content.Context; import android.content.Intent; import android.test.ServiceTestCase; import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; /** * * This test should be executed on […]

Android JUnit4testing

我想运行一些JUnit4testing。 该代码依赖于一些Android库(Android XMLparsing器),但不会创build任何活动等等。 当我尝试运行testing时,我得到了一个我没有find的Android类。 有没有办法用Android代码运行JUnit4testing,而不是testing活动,而是用一些库来testing代码。

Robolectric + Eclipse找不到资源?

我刚刚为我的Android应用程序configuration了一个testing项目来使用Robolectric。 我遵循Eclipse快速入门 。 执行我简单的第一个testing就引发了一个exception。 java.lang.RuntimeException: java.lang.NullPointerException at com.xtremelabs.robolectric.res.ResourceLoader.init(ResourceLoader.java:93) at com.xtremelabs.robolectric.res.ResourceLoader.getStringValue(ResourceLoader.java:271) at com.xtremelabs.robolectric.shadows.ShadowResources.getString(ShadowResources.java:56) at android.content.res.Resources.getString(Resources.java) at org.xxx.mobile.android.teldir.app.TelephoneDirectoryTest.searchButtonLabelShouldBeGo(TelephoneDirectoryTest.java:22) […] Caused by: java.lang.NullPointerException at com.xtremelabs.robolectric.res.StringResourceLoader.getValue(StringResourceLoader.java:17) at com.xtremelabs.robolectric.res.StringArrayResourceLoader.processNode(StringArrayResourceLoader.java:39) at com.xtremelabs.robolectric.res.XpathResourceXmlLoader.processResourceXml(XpathResourceXmlLoader.java:27) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlFile(DocumentLoader.java:58) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlDir(DocumentLoader.java:52) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlDir(DocumentLoader.java:39) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResourcesFromDir(ResourceLoader.java:142) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResourcesFromDirs(ResourceLoader.java:136) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResources(ResourceLoader.java:109) at com.xtremelabs.robolectric.res.ResourceLoader.init(ResourceLoader.java:85) at com.xtremelabs.robolectric.res.ResourceLoader.getStringValue(ResourceLoader.java:271) at com.xtremelabs.robolectric.shadows.ShadowResources.getString(ShadowResources.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.xtremelabs.robolectric.bytecode.ShadowWrangler.methodInvoked(ShadowWrangler.java:87) […]