【发布时间】:2014-06-16 11:18:14
【问题描述】:
我希望能够为我的 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"));
}
}
这给了我一个java.lang.NullPointerException 在getName() 的回报。
我显然用错了,但我不知道怎么做。有这方面经验的人可以为我指明正确的方向吗?
【问题讨论】:
-
你到底为什么要模拟 WebDriver?我不明白您对“单元测试 [ing] 我的 Selenium 集成测试”的评论。
-
因为我想确保我使用 webdriver 的函数是正确的。就像在这种情况下,如果我没有模拟驱动程序来返回我的预定义元素,则无法测试函数 getName。
标签: java selenium webdriver mockito