use*_*166 5 java selenium webdriver mockito
我希望能够对我的Selenium集成测试进行单元测试,并且为此我需要能够模拟驱动程序和测试所需的元素,这是一个返回元素名称的函数的快速示例。 。
public class demo {
private WebDriver mockDriver;
private WebElement mockElement;
@Before
public void setUp(){
this.mockDriver = mock(WebDriver.class);
this.mockElement = mock(WebElement.class, withSettings().name("elementName"));
when(this.mockDriver.findElement(By.id("testmock"))).thenReturn(mockElement);
}
public String getName(String id){
WebElement testElement = mockDriver.findElement(By.id(id));
return testElement.getAttribute("name");
}
@Test
public void assertElementName() throws InterruptedException {
Assert.assertTrue(getName("testmock").equals("elementName"));
}
}
Run Code Online (Sandbox Code Playgroud)
这给我带来java.lang.NullPointerException了回报getName()。我显然使用了这个错误,但是我不知道怎么做。任何在这方面有经验的人都可以为我指明正确的方向?
您误解了这段代码的作用:
this.mockElement = mock(WebElement.class, withSettings().name("elementName"));
Run Code Online (Sandbox Code Playgroud)
该withSettings()子句为模拟对象提供了一个名称,这意味着Mockito生成的某些错误消息将使用该名称。您没有在WebElement对象上设置任何属性。
所以...当您的代码到达这一部分时:
return testElement.getAttribute("name");
Run Code Online (Sandbox Code Playgroud)
它返回null,因为没有具有该值的属性。如果要具有属性,则需要添加如下内容:
when(this.mockElement.getAttribute("name")).thenReturn("elementName");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3785 次 |
| 最近记录: |