我的任务是为现有的 Android 活动编写单元测试,并且编写的代码不是为了符合单元测试(紧耦合)。
场景:我有一个类 StroageManager,它在 MyActivity onCreate 方法中被实例化。
@Override
protected void onCreate(Bundle savedInstanceState)
{
StorageManager storagemanager = GetStorageManager(); // return new object of stroage manager
super.onCreate(savedInstanceState);.....
...
}
Run Code Online (Sandbox Code Playgroud)
为了通过 Robolectric 创建活动实例,我需要在设置 MyActivity 之前在我的测试中模拟它。
问题:如何在通过 robolectric 创建 myActivity 对象时模拟和注入此模拟对象
注意:这是现有的 Activity,我没有太多的自由来修改 Activity 代码以进行大范围扩展。此外,我们正在使用 Mockito 框架进行模拟,因此如果您提供使用 Mockito 的示例,那就太好了。
这是我的示例代码,我尝试将 Robolectric 与 Mockito 结合使用,但无法正常工作:
@RunWith(RobolectricTestRunner.class)
public class myActivityTest {
@Mock
private StorageManager storageManager;
@InjectMocks
MyActivity myActivity;
@Before
public void setUp() {
ActivityController<MyActivity> activityController = Robolectric.buildActivity(MyActivity.class);
myActivity = activityController.get();
// when(registrationActivity.GetMetricManager()).thenReturn(mock(MetricsManager));
initMocks(this); …Run Code Online (Sandbox Code Playgroud)