Articles of junit4

Android Studio中的AndroidJunit4.class运行器不会调用@Test方法

我已应用以下说明: https : //code.google.com/p/android-test-kit/wiki/AndroidJUnitRunnerUserGuide来设置JUnit4测试。 特别是我遵循将Junit4与ActivityInstrumentationTestCase2一起使用的步骤,但是当我在Android Studio中运行测试时,@ Test注释方法没有被执行。 如果我使用’test’对方法进行前缀,那么它可以工作,但这不是我对JUnit 4测试的期望。 有谁遇到过这个问题? 问候,

如何使用Java中的appium为Android本机应用程序执行滑动

我需要刷我的应用程序(从左到右,从右到左),这里我使用Java appium for android native app automation。 我试过这个链接, Swipe方法在android自动化测试中不起作用 但我不能,是否有任何其他链接请分享或任何人帮助我。

使用AndroidStudio运行JUnit测试的exception:java.lang.NoClassDefFoundError:android / os / Parcelable

我根据http://tools.android.com/tech-docs/unit-testing-support创建了unit testing,但是当我运行它们时,我得到一个exception: java.lang.NoClassDefFoundError: android/os/Parcelable at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2615) at java.lang.Class.getDeclaredMethods(Class.java:1860) at org.junit.internal.MethodSorter.getDeclaredMethods(MethodSorter.java:54) at org.junit.internal.runners.JUnit38ClassRunner.(JUnit38ClassRunner.java:74) at org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:11) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:41) […]

java.lang.RuntimeException:Stub! 在Android项目中运行Junit

在一个Android项目中,我尝试运行简单的junit测试。 他们总是失败: java.lang.RuntimeException: Stub! at org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:5) at org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:7) at com.my.android.JsonParser.getJSONFromUrl(JsonParser.java:27) at com.my.android.test.JsonParser_Test.getJson(JsonParser_Test.java:19) 这是它失败的线,任何新的类启动都会这样做。 public JSONObject getJSONFromUrl(String url) { DefaultHttpClient httpClient = new DefaultHttpClient(); … } 在几篇文章中,我发现应该在Android SDK之前包含junit jar。 我在IntelliJ做到了,但我没有帮助。 我使用的是junit 4.9和Android SDK 4.2.2

akquinet(带测试原型的Android) – 不执行unit testing

我使用akquinet原型生成了一个Android项目: mvn archetype:generate \ -DarchetypeArtifactId=android-with-test \ -DarchetypeGroupId=de.akquinet.android.archetypes \ -DarchetypeVersion=1.0.11 \ -DgroupId=com.foo.bar \ -DartifactId=my-android-project \ -Dpackage=com.foo.bar.android 这个原型创造了 一个父项目, myproject项目与实际的Android应用程序和 myproject-it与集成测试。 当我将以下测试类添加到myproject-it项目并运行mvn install ,我没有收到测试失败消息。 import org.junit.Assert; import org.junit.Test; public class SimCardReaderTest { @Test public void testGetAvailableSimCards() { Assert.fail(“Not implemented”); } } 因此,不执行unit testing。 在基于akquinet的项目中,如何运行unit testing(测试,不依赖于Android环境),我该怎么办?

注释@UiThreadTest生成“java.lang.Exception:No runnable methods”

我一直在尝试编写一个与系统栏一起使用的unit testing。 我在尝试从错误的线程访问东西时遇到错误:android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。 我已经读过使用@UiThreadTest注释将导致我的测试用例在ui线程上运行并解决错误。 但是,当我使用它时,我收到此错误:java.lang.Exception:没有runnable方法 我添加了UiThreadTestRule并确保我导入android.support.test.annotation.UiThreadTest,但无济于事。 还有什么我想念的吗? import android.support.test.InstrumentationRegistry; import android.support.test.rule.UiThreadTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.ActivityInstrumentationTestCase2; import android.view.View; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import android.support.test.annotation.UiThreadTest; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) /** * Testing Fundamentals */ public class SystemBarSetterTest extends ActivityInstrumentationTestCase2 { private SystemBarSetter setter; public SystemBarSetterTest() { super(SystemBarSetter.class); } @Rule public UiThreadTestRule mUiThreadTestRule = new […]

错误:任务执行失败’:app:transformClassesWithMultidexlistForDebugAndroidTest’

我无法弄清楚为什么会出现这个错误 这是完整的错误 Error:Execution failed for task ‘:app:transformClassesWithMultidexlistForDebugAndroidTest’. > java.io.IOException: The output jar is empty. Did you specify the proper ‘-keep’ options? 我的gradle android项目没有“androidTest”所以我手动创建,测试文件夹在这里是文件夹结构的截图

android.util.Patternsunit testing返回NullPointerException

我开始在android中使用unit testing我试图测试一个使用的方法: android.util.Patterns.EMAIL_ADDRESS.matcher(validEmail).matches() 它应该返回true,因为我在build.gradle中添加了它 testOptions { unitTests { returnDefaultValues = true } } 测试仍会抛出NullPointerException。 我有两个问题:1-如何解决这个问题? 2-我应该重新考虑我的设计并将android依赖项移除到模拟对象。 // @ LoginPresenterTest @Test public void clickOnLogin_loginSuccess(){ loginPresenter.login(validEmail, validPassword); verify(loginView).setLoginButton(false); } // LoginPresenter public void login(String email, String password) { loginView.setLoginButton(false); if(!isValid(email, password)){ loginView.setLoginButton(true); return; } } // Validation public static boolean isEmailValid(String email){ return !(email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()); } […]

ActivityInstrumentationTestCase2 vs ActivityTestRule

我需要在Android应用中测试一项活动。 ActivityInstrumentationTestCase2的文档说: 此类提供单个活动的function测试。 ActivityTestRule的文档说: 此规则提供单个活动的function测试。 几乎一样的话。 除了我编码的两个样本,做同样的事情。 那么我应该优先于ActivityTestRule不是ActivityInstrumentationTestCase2 ,反之亦然? 我看到扩展ActivityInstrumentationTestCase2看起来像一个JUnit3样式的测试(它的祖先是junit.framework.TestCase ,测试方法应该从单词test开始)。 使用ActivityTestRule package sample.com.sample_project_2; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.LargeTest; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.typeText; import static android.support.test.espresso.matcher.ViewMatchers.withId; @RunWith(AndroidJUnit4.class) @LargeTest public class ApplicationTest { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule(SecAct.class); @Test public void foo() { onView(withId(R.id.editTextUserInput)).perform(typeText(“SAMPLE”)); } […]

junit4打开一个getResources()。使用mockito的openRawResource运行nullpointer

android studio 2.1. preview 4 我正在创建一个junit4 unit test来测试打开原始目录中包含的文件。 但是,每次代码运行时,我都可以从openRawResource空指针。 这是我试图测试的function。 这在实际设备上运行时有效。 但不是在unit testing中。 public String getNewsFeed(Context mContext) { InputStream inputStream = mContext.getResources().openRawResource(R.raw.news_list); // Null pointer Writer writer = new StringWriter(); char[] buffer = new char[1024]; try { InputStreamReader inputReader = new InputStreamReader(inputStream, “UTF-8”); BufferedReader bufferReader = new BufferedReader(inputReader); int n; while ((n = bufferReader.read(buffer)) != […]