Articles of junit

Service.startForeground()在与ServiceTestCase一起运行时抛出NullPointerException

这是一个已知的烦人的2岁的Android错误。 我的问题是,除了修改Android源代码并重新编译它之外,是否有人知道这个问题的任何解决方法? 这是我的代码为了完成: 我的服务子类提出了NPE的方法: /** Shows notification of started service */ private void doStartForeground() { // Prepare notification final NotificationHelper nh = doNotification("Service started"); // Start foreground startForeground(nh.getNotificationId(), nh.getNotification()); } 这是从onCreate()方法覆盖中调用的。 而JUnit的testing方法是: public void test1() throws InterruptedException { assertTrue(context != null); final Intent service = new Intent(); service.setComponent(new ComponentName(CoreService.PACKAGE_NAME, CoreService.SERVICE_FULL_NAME)); IBinder binder = bindService(service); assertTrue(binder […]

我怎样才能unit testing从活动发起/发送的意图?

如何创buildtesting活动内生成的Intent内容的Android JUnittesting用例? 我有一个包含EditText窗口的Activity,当用户完成input所需数据时,Activity将Intent发送到IntentService,IntentServicelogging数据并继续执行应用程序进程。 这里是我想testing的类,OnEditorActionListener / PasscodeEditorListener被创build为一个单独的类: public class PasscodeActivity extends BaseActivity { EditText m_textEntry = null; PasscodeEditorListener m_passcodeEditorListener = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.passcode_activity); m_passcodeEditorListener = new PasscodeEditorListener(); m_textEntry = (EditText) findViewById(R.id.passcode_activity_edit_text); m_textEntry.setTag(this); m_textEntry.setOnEditorActionListener(m_passcodeEditorListener); } @Override protected void onPause() { super.onPause(); /* * If we're covered for any reason during the […]

与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)中的。 […]

在设备操作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 […]

JUnit和Android?

有人使用Junit和Android? 或者这只是一个值得期待的希望? 有任何地方的教程?

testAndroidTestCaseSetUp适合做什么?

我知道,在Android中,额外的testingtestAndroidTestCaseSetUpProperly经常被添加到testing用例(不知道它是否一直发生)。 虽然以前我从来不需要付出太多,但是在分析一些使用ContentProvider的testing时,我注意到了一些奇怪的东西。 当我在ContentProvider中添加以下日志logging时: static { Log.d("UKMPG", "Initialising URIMatcher"); uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //add uris } @Override public boolean onCreate() { Log.d("UKMPG", "onCreate() called in ContentProvider"); //set up db } 我注意到这些日志出现两次logcat(由我添加的空行): 12-31 13:00:07.112: D/AndroidRuntime(1135): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 12-31 13:00:07.112: D/AndroidRuntime(1135): CheckJNI is ON 12-31 13:00:07.333: D/AndroidRuntime(1135): — registering native functions — 12-31 13:00:07.342: I/jdwp(1135): received […]

如何将一个parameter passing给一个android junittesting(参数化testing)

我正在运行我的android junittesting使用命令行或eclipse取决于如果我在开发模式或在设备testing。 一个java应用程序有一个Main(String [] args)方法,很容易传递一个参数给它(或者在运行configuration部分的Arguments选项卡中使用eclipse或者通过命令行) 对于一个Android的junittesting它是不同的,没有主要的方法,我无处可以设置一些参数。 我已经阅读这里和那里解决scheme将是使用属性文件。 这是唯一的方法吗? 如果你是一个快速简单的例子,将非常感激。 谢谢 >>> Edit <<< 我正在使用Robotium,junit扩展了ActivityInstrumentationTestCase2请参阅下面的基本junittesting: import android.test.ActivityInstrumentationTestCase2; import android.util.Log; import com.jayway.android.robotium.solo.Solo; public class Test_arg extends ActivityInstrumentationTestCase2 { private static final String TARGET_PACKAGE_ID = "com.myapp.test"; private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.myapp"; private static Class launcherActivityClass; private Solo solo; static { try { launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } […]

如何在活动片段上运行testing

我刚刚开始了,我碰到的第一个问题是,我应该如何testing片段? 被testing的活动有1个片段,这是主要的布局。 @Override protected void setUp() throws Exception { super.setUp(); Intent intent = new Intent(getInstrumentation().getTargetContext(), ActivityWelcome.class); startActivity(intent, null, null); FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); mFragmentWelcome = (FragmentWelcome) fragmentManager.findFragmentByTag(FragmentWelcome.TAG); if (mFragmentWelcome == null) { mFragmentWelcome= FragmentWelcome.newInstance(); fragmentManager .beginTransaction() .replace(android.R.id.content, mFragmentWelcome, FragmentWelcome.TAG) .commit(); } } 然后我继续testing版面: @SmallTest public void testLayout() { ImageButton buttonImage = (ImageButton) getActivity().findViewById(my.package.R.id.button_invites); assertNotNull(buttonImage); assertEquals("ImageButton […]

为什么Android在TestNG上使用JUnit,即使Cedric Beust创build了TestNg并且是Android团队的一部分?

只是好奇而已 Cedric Beust创build了TestNG ,我从阅读中了解到,这是Android团队的一部分。 他们为什么select使用JUnit作为Android Eclipse Tools的testing基础架构? TestNG应该比JUnit更好吗?

Android的jUnittestingjava.lang.NoClassDefFoundError:android /数据库/ sqlite的/ SQLiteOpenHelper

我试图运行一个unit testing哪个模拟SQLiteOpenHelper的子类,但我得到以下错误。 java.lang.NoClassDefFoundError: android/database/sqlite/SQLiteOpenHelper at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) … at org.dfhu.vpodplayer.util.JsonExporterTest.export(JsonExporterTest.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) … 我的Gradle文件看起来像 apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion '25.0.1' defaultConfig { applicationId "org.dfhu.vpodplayer" minSdkVersion 18 targetSdkVersion 24 versionCode 1 versionName "1.2" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false […]