我是Java初学者,我尝试在JUnit中执行数据驱动的测试以进行练习。我想检查预期的定位符是否等于我的“ UsernameVerification()”方法生成的实际定位符。目前,我的测试所引用的类中有以下代码块:
public void UsernameVerification() {
ChromeDriver driver = new ChromeDriver();
driver.get(LOGINPAGE);
WebElement username = driver.findElement(By.cssSelector("#username"));
username.sendKeys("[email protected]");
}
这是我对应的测试类:
@Test
public void test(){
DataDriven test = new DataDriven();
test.UsernameVerification();
assertEquals("#username", test);
}
运行测试时,出现此错误:
org.opentest4j.AssertionFailedError:预期:,但是:
预期的:#用户名
实际的:DataDriven @ 6c372fe6
我怀疑问题是JVM不知道应该将locator与UsernameVerification()方法的哪个部分进行比较...或者'assertEquals'与'equals'确实有点过分。
有没有一种方法可以通过使'assertEquals'比较我的UsernameVerification()方法中的'username'WebElement与我输入的预期定位符来通过测试?
抱歉,缺少适当的术语。我对对象引用在Java中的工作方式进行了一些研究,虽然有点了解但不确定如何解决这个问题。
最佳答案
在这里,test
是对DataDriven
类实例的引用,而"#username"
是字符串。字符串不能等于用户名,出于相同的原因,任何给定的枪支都不可能与任何给定的祖母相同。这些是非常不同的对象,因此尝试比较两个结果的速度非常快:不,当然它们是不同的。
该错误消息看起来像一个内存地址,但这仅是因为它正在调用DataDriven的默认toString()
方法,该方法以这种方式自行打印。该地址不是比较例程的一部分。
检查DataDriven
是否具有equals方法。如果不是,则编写它;如果不能,则不能将assertEquals
与DataDriven实例一起使用。如果确实如此,那就太好了-您可以将DataDriven
的一个实例与另一个实例进行比较。
或者,向DataDriven实例查询某个值,然后针对"#username"
检查THAT。例如:assertEquals("#username", test.getUsername())
。我不知道DataDriven
是什么或它的外观,所以我假设它具有getUsername()
方法。您正在寻找类似的东西(当然,并确保它返回String
,或者您仍在比较枪支和祖母。