Tag: 嘲弄

Android模拟相机

是否可以模拟Android Camera类? @Override public void setUp() { _camera = Mockito.mock(Camera.class); } 无法生成模拟(Mockito的createProxyClass ExceptionInitializerError )。 我应该在Camera周围创建一些包装器(不是我最喜欢的解决方案,真的很想嘲笑这个类……)? 或者,我应该使用不同的模拟库然后Mockito? 希望有人能指出我正确的方向。 完成ExceptionInitializerError堆栈跟踪 java.lang.ExceptionInInitializerError at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85) at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62) at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56) at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23) at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51) at org.mockito.Mockito.mock(Mockito.java:1243) at org.mockito.Mockito.mock(Mockito.java:1120) at com.cleancode.lifesaver.flashlight.test.FlashLightTests.setUp(FlashLightTests.java:20) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661) Caused by: 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) at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217) […]

Mockito – 期望0匹配,1记录(InvalidUseOfMatchersException)

我正在尝试模拟一些mongo类,这样我就不需要连接(相当标准的东西)但是下面的代码给了我一些问题: when(dbCollection.find(isA(DBObject.class))).thenReturn(dbCursor); 运行这个得到我: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 参数匹配器的使用无效! 0匹配预期,1记录: at … GridFileManagerTest.beforeClass(GridFileManagerTest.java:67) 如果匹配器与原始值组合,则可能发生此exception: //错误:someMethod(anyObject(),“raw String”); 使用匹配器时,所有参数都必须由匹配器提供。 例如: //正确: someMethod(anyObject(),eq(“by matcher”)); 有关更多信息,请参阅Matchers类的javadoc。 如果我这样做: when(dbCollection.find(mock(DBObject.class))).thenReturn(dbCursor); 它不再有这个问题。 这似乎没有实现我想要的 – 我想在使用DBObject类型的对象调用方法时返回值。 思考?

模拟GPS位置问题

我正在开发一个获取用户指定的纬度,经度和海拔高度的APP,然后在手机上伪造这个GPS位置,并显示我在谷歌地图中的那个位置。 我对清单文件具有所需权限,并且在开发人员设置中启用了模拟位置。 LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //lm.clearTestProviderEnabled(mocLocationProvider); lm.addTestProvider(mocLocationProvider, false, false, false, false, false, false, false, 0, 10); lm.setTestProviderEnabled(mocLocationProvider, true); mockLocation = new Location(mocLocationProvider); // a string mockLocation.setLatitude(Integer.parseInt(latitude.getText().toString())); // double mockLocation.setLongitude(Integer.parseInt(longitude.getText().toString())); mockLocation.setAltitude(Integer.parseInt(altitude.getText().toString())); mockLocation.setTime(System.currentTimeMillis()); lm.setTestProviderLocation( mocLocationProvider, mockLocation); 但看起来我的GPS位置在谷歌地图上根本没有改变,有什么问题? 更新:我刚刚在我的手机上安装了一个名为“伪GPS位置”的应用程序,该应用程序工作正常,但我仍然不知道我的代码有什么问题,但我认为我的正式方法是实现这一点。 更新#2:虽然一些类似的应用程序可以在我的手机上运行,​​但我发现了一些例外, http://www.cowlumbus.nl/forum/MockGpsProvider.zip ,这个应用程序无法在我的手机上运行。 有人可以帮我解决这个问题吗? 数百万的谢谢! 每次设置位置时我都没有收到任何错误消息。 更新#3:我注意到这个应用程序相当陈旧,所以它不能在4.1上运行。 如果是这样,如何在新版本中做同样的事情? 我的手机是三星galaxy s3,希望它有所帮助。 更新#4:对于您的信息,我的更新#2中的应用程序代码是: package nl.cowlumbus.android.mockgps; import java.io.BufferedReader; import java.io.InputStream; […]

测试Java套接字

我正在开发一个网络应用程序,我想让unit testing正确。 这个时候我们会这样做,你知道吗? 🙂 不过,我在测试网络连接时遇到了麻烦。 在我的应用程序中,我使用普通的java.net.Socket 。 例如: import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class Message { byte[] payload; public Message(byte[] payload) { this.payload = payload; } public boolean sendTo(String hostname, int port) { boolean sent = false; try { Socket socket = new Socket(hostname, port); OutputStream out = socket.getOutputStream(); out.write(payload); socket.close(); […]

我可以使用mockito来匹配具有自动更新时间戳的对象吗?

在进行模拟调用之前自动更新时间戳的最佳方法是什么? 这是我试图测试的一些虚拟代码: public class ThingWithATimestamp { public Long timestamp; public String name; public ThingWithATimestamp(String name) { this.name = name; } } public class TheClassThatDoesStuff { private ThingConnector connector; public TheClassThatDoesStuff(ThingConnector connector) { this.connector = connector; } public void updateTheThing(MyThingWithATimestamp thing) { thing.timestamp = currentTimestamp(); connector.update(thing); } } 这是我想要测试的: public class TheClassThatDoesStuffTests { @Test public void […]