【问题标题】:How to mock appium driver(ios/android) using easymock?如何使用 easymock 模拟 appium 驱动程序(ios/android)?
【发布时间】:2018-12-05 08:38:17
【问题描述】:

我试图模拟 Appium IOS 驱动程序的示例代码,它给出了 Null >指针异常

初始化 Driver 和 AndroidDriver 对象

Driver driver;
AndroidDriver<AndroidElement> androidDriver;

@SuppressWarnings({ "unchecked" })
@Test
public void getLogAndroid_happyPath() throws Exception{
>Setting logs to mock return type

List<LogEntry> setLogs = new ArrayList<LogEntry>();
setLogs.add(new LogEntry(Level.ALL, 0, "logs"));
driver = new Driver();

使用 Nice Mock 模拟 Android 驱动程序可能导致 void 在此处输入代码>返回类型以及

androidDriver = EasyMock.createNiceMock(AndroidDriver.class);
driver.setAndroidDriver(androidDriver);

EasyMock 对象调用

EasyMock.expect(androidDriver.manage().logs().get(EasyMock.anyString()).getAll()).andReturn(setLogs);
EasyMock.replay(androidDriver);
try {
>Asserting mocked return type               

  assertTrue(driver.getLog("getLog",5000).contains(setLogs));       
} catch (Exception e) {
  e.printStackTrace();
}

>Verify EasyMock Object

EasyMock.verify(androidDriver);
EasyMock.reset(androidDriver);
}

【问题讨论】:

  • 模拟 AndroidDriver 背后的想法是什么?我很难想象你必须这样做的情况。

标签: unit-testing appium easymock


【解决方案1】:

你不能EasyMock.expect(androidDriver.manage().logs().get(EasyMock.anyString()).getAll())

即使androidDrive 是一个模拟,它也不会导致androidDriver.manage() 返回一个模拟。它将返回空值。所以你现在可能有一个 NPE。

所以你需要类似的东西(我也在使用更现代的语法):

androidDriver = niceMock(AndroidDriver.class);
what_is_returned_by_manage = mock(WhatIsReturnedByManage.class);
what_is_returned_by_logs = mock(WhatIsReturnedByLogs.class);
what_is_returned_by_get = mock(WhatIsReturnedByGet.class);
expect(androidDriver.manage()).andReturn(what_is_returned_by_manage);
expect(what_is_returned_by_manage.logs()).andReturn(what_is_returned_by_logs);
expect(what_is_returned_by_logs.get(anyString())).andReturn(what_is_returned_by_get);
expect(what_is_returned_by_get.getAll()).andReturn(setLogs);

但实际上我永远不会编写代码。我会在what_is_returned_by_manage 上添加getAllLogs 或类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-30
    • 2020-10-15
    • 1970-01-01
    • 2015-09-01
    • 2013-11-11
    • 2015-10-14
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多