Articles of mockito

在“Mockito文档”中,“SRPy”代表什么?

从http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html 像往常一样,您将阅读部分模拟警告:面向对象编程通过将复杂性划分为单独的,特定的SRPy对象来解决更复杂的问题。 部分模拟如何适应这种模式? 那么,它只是不…部分模拟通常意味着复杂性已被转移到一个不同的方法对同一个对象。 在大多数情况下,这不是您想要devise应用程序的方式。

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

unit testing的改装2 api呼叫与Mockito

我需要一些关于如何嘲笑restapi的build议。 我的应用程序是在MVP架构。 我的API接口: public interface MyAPI { @GET("{cmd}/{userName}/{password}") Observable<Response> login( @Path("cmd") String cmd, @Path("userName") String userName, @Path("password") String password ); 我的服务: public class MyService implements IService { private static MyService mInstance = new MyService(); private MyAPI mApi; public static MyService getInstance() { return mInstance; } private MyService() { OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); httpClientBuilder.connectTimeout(Config.DEFAULT_TIMEOUT, TimeUnit.SECONDS); […]

如何让Powermock与Dexmaker合作

我正在尝试使用以下build.gradleconfiguration将Powermock作为我的Androidtesting的依赖项: dependencies{ 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('org.powermock:powermock-module-junit4:1.5.5') { exclude module: 'junit' } androidTestCompile('org.powermock:powermock-api-mockito:1.5.5') { exclude module: 'mockito-all' } } 然而,编译器抱怨说 Error:Gradle: Execution failed for task ':app:packageDebugTest'. > Duplicate files copied in APK mockito-extensions/org.mockito.plugins.MockMaker File 1: ~/.gradle/caches/modules-2/files-2.1/com.google.dexmaker/dexmaker-mockito/1.2/b99884a4c6ef6335ba376f79aa79632b2421c17c/dexmaker-mockito-1.2.jar File 2: ~/.gradle/caches/modules-2/files-2.1/com.google.dexmaker/dexmaker-mockito/1.2/b99884a4c6ef6335ba376f79aa79632b2421c17c/dexmaker-mockito-1.2.jar 看着jar结构,我注意到Dexmaker和Powermock MockMaker在mockito-extensions声明了MockMaker 什么是MockMaker? 他们有什么不同? 而最重要的问题是:是否有可能使Powermock与Dexmaker很好地协作? 提前致谢。 任何帮助将不胜感激。

当在Android中侦听LinkedList时java.lang.AbstractMethodError

我想要窥探Android中的链表。 List list = new LinkedList(); List spyData = Mockito.spy(list); spyData.add("xxxx"); 但是,发生exception。 java.lang.AbstractMethodError: abstract method "boolean org.mockito.internal.invocation.AbstractAwareMethod.isAbstract()" at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:109) at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:41) at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38) at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:49) at LinkedList_Proxy.add(LinkedList_Proxy.generated) at com.app.test.testmethod(mytest.java:202) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1858) libs的依赖关系是 dexmaker-1.2.jar dexmaker-mockito-1.2.jar mockito-core-1.10.19.jar 即使我更新mockito-core-1.10.19.jar到mockito-core-2.0.31-beta.jar , 问题依然存在。 但Mockito.mock(Linkedlist.class)是好的,我没有关于这个问题的想法。 谢谢。

mockito和eclipse的configuration问题。 给出错误:java.lang.verifyError

当我将我的mockito库添加到类path,并使用一个简单的mockito示例进行testing,我尝试通过使用模拟对象尝试返回错误的函数添加值,我得到java.lang.verifyerror。 以下是用于testing的代码,其次是logcat。 @Test public void testadd() { maincode obj2=mock(maincode.class); when(obj2.add(0, 0)).thenReturn(9); assertEquals(obj2.add(0, 0),9); } 我得到以下错误。 请帮忙! 谢谢。 java.lang.VerifyError:org / mockito / cglib / core / ReflectUtils at org.mockito.cglib.core.KeyFactory $ Generator.generateClass(KeyFactory.java:167)at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy .java:25)org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)at org.mockito.cglib.core.KeyFactory $ Generator.create(KeyFactory.java:145)at org.mockito。 cglib.core.KeyFactory.create(KeyFactory.java:117)位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java: 105)在org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)org.mockito.internal.creation。org.mockito.cglib.proxy.Enhancer。(Enhancer.java:70)。在org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56)上的jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)at org.mockito.internal.creation.CglibMockMaker.createMock (CglibMockMaker.java:23)在org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)在org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)在org.mockito.Mockito。模拟(Mockito.java:1243)在org.mockito.Mockito.mock(Mockito.java:1120)在testaddmock.testadd(testaddmock.java:24)在java.lang.reflect.Method.invokeNative(本地方法)在android .test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)在android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1701)

Android:生成一个模拟意图,并从中返回一些意图数据

我正在使用ActivityInstrumentationTestCase2对我的应用程序进行unit testing。 我有一个例子,用户点击活动“A”的button,然后打开一个新的活动“B”,用户将做一些工作,最后通过setResult(RESULT_OK,intent)将一些数据返回到活动“A” ; 现在,我想通过jUnittesting这个,想要模拟这个工作stream程,以便不需要用户交互。 有人可以帮我弄这个吗。 PS:我不想为此使用Robotium ..我只是想通过简单的ActivityInstrumentationTestCase2和一些Mocking框架来做到这一点。

如何安卓unit testing和模拟静态方法

嗨,我真的希望你能帮助我,我觉得我已经把我的头发拉了几天。 我试图写一个方法的unit testingA.方法A调用一个静态方法B.我想嘲笑静态方法B. 我知道这已经被问到了,但是我觉得Android已经成熟了,而且必须有一种方法来做这样一个简单的任务,而不用重写我想testing的方法。 这里是一个例子,首先我要testing的方法: public String getUserName(Context context, HelperUtils helper) { if(helper == null){ helper = new HelperUtils(); } int currentUserId = helper.fetchUsernameFromInternet(context); if (currentUserId == 1) { return "Bob"; } else { return "Unknown"; } } 接下来是我想要模拟的静态方法: public class HelperUtils { public static int fetchUsernameFromInternet(Context context) { int userid = 0; Log.i("HelperUtils ", […]

MockitoAnnotations.initMocks在mock()成功时崩溃

我在使用@Mock注释和我的仪器testing时遇到了麻烦。 这是我的gradle依赖关系: androidTestCompile 'org.mockito:mockito-core:1.10.19' androidTestCompile 'com.google.dexmaker:dexmaker:1.2' androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' 以下是一段代码示例: @Mock View mockView @Before public void setup() { MockitoAnnotation.initMocks(this); … } 这崩溃了 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference at com.google.dexmaker.mockito.DexmakerMockMaker.getInvocationHandlerAdapter(DexmakerMockMaker.java:80) at com.google.dexmaker.mockito.DexmakerMockMaker.getHandler(DexmakerMockMaker.java:75) … 但是,这工作 View mockView @Before public void setup() { mockView = Mockito.mock(View.class); … } 任何人有什么想法这里发生了什么?

configurationgradle使用JUnit,Mockito,Hamcrest和Espresso

我有一个Android项目,使用Mockito,Hamcrest和Espresso来帮助testing。 无论我尝试使用Gradle构build文件,当我尝试在执行gradle androidTestCompile之后运行我的testing时,我得到了org.hamcrest.Matcher.anyOf的NoSuchMethodError 。 这是我目前的configuration: dependencies { compile project(':GameCore') androidTestCompile files( 'libs/espresso-1.1.jar', 'libs/testrunner-1.1.jar', 'libs/testrunner-runtime-1.1.jar' ) androidTestCompile( 'junit:junit:4.11', 'org.mockito:mockito-core:1.10.0', 'com.google.guava:guava:14.0.1', 'com.squareup.dagger:dagger:1.1.0', 'com.google.dexmaker:dexmaker:1.0', 'com.google.dexmaker:dexmaker-mockito:1.0', 'org.hamcrest:hamcrest-core:1.3', 'org.hamcrest:hamcrest-library:1.3' ) 我试过重写Mockito和JUnit的要求,像这样排除Hamcrest: androidTestCompile('junit:junit:4.11') { exclude group: 'org.hamcrest' } 但这并没有什么区别。 GameCore项目是一个纯Java项目。 它也依赖于JUnit和Mockito,但是当它们被指定为testCompile ,我不认为它们应该是干涉的。 “ gradle dependencies ”这个模块的gradle dependencies的输出是: +— junit:junit:4.11 | \— org.hamcrest:hamcrest-core:1.3 +— org.mockito:mockito-core:1.10.0 | +— org.hamcrest:hamcrest-core:1.1 -> 1.3 | \— […]