【发布时间】:2012-06-06 08:02:06
【问题描述】:
我有一个由某人编写的类,它将其属性公开为没有 getter/setter。
现在我想使用 Android Mocking 框架来模拟这个类。 我不想修改 class_under_test(除非需要)。我知道这是一种不好的编程习惯,但是有没有办法模拟像
这样的属性AndroidMock.expect(myMockClass.name).andReturn('Scott');
运行测试用例时出现异常:
java.lang.IllegalStateException: no last call on a mock available
at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:174)
at org.easymock.EasyMock.expect(EasyMock.java:156)
at com.google.android.testing.mocking.AndroidMock.expect(AndroidMock.java:264)
at com.akshat.test.TestPerson.testGetName(TestPerson.java:41)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
【问题讨论】:
-
“我有一个由某人编写的类,它将其属性公开为没有 getter/setter。”我认为您的意思是字段,而不是属性。属性通常是字段、getter 和 setter 的组合。谷歌“java 字段属性”(不带引号)了解更多详情。
标签: android unit-testing mocking