为什么我的Java单元测试结果会将预期结果与内存位置进行比较?
我是一名Java测试新手,我正在尝试在JUnit中执行一个数据驱动测试以供练习。我想检查预期的定位器是否等于我的“UsernameVerification()”方法生成的实际定位器。当前,我的测试所引用的类中有以下代码块:为什么我的Java单元测试结果会将预期结果与内存位置进行比较?,java,selenium-webdriver,junit,junit4,Java,Selenium Webdriver,Junit,Junit4,我是一名Java测试新手,我正在尝试在JUnit中执行一个数据驱动测试以供练习。我想检查预期的定位器是否等于我的“UsernameVerification()”方法生成的实际定位器。当前,我的测试所引用的类中有以下代码块: public void UsernameVerification() { ChromeDriver driver = new ChromeDriver(); driver.get(LOGINPAGE); WebEleme
public void UsernameVerification() {
ChromeDriver driver = new ChromeDriver();
driver.get(LOGINPAGE);
WebElement username = driver.findElement(By.cssSelector("#username"));
username.sendKeys("username@user.com");
}
这是我对应的测试类:
@Test
public void test(){
DataDriven test = new DataDriven();
test.UsernameVerification();
assertEquals("#username", test);
}
运行测试时,出现以下错误:
org.opentest4j.AssertionFailedError:应为:但为:抱歉,没有合适的术语。我对Java中对象引用的工作原理做了一些研究,我有点了解,但不确定如何解决这个问题。这里,
test
是对DataDriven
类实例的引用,“#username”
是一个字符串。字符串不能等于用户名,这与任何给定的枪都不可能与任何给定的用户名相同。这两种物体的种类大不相同,因此试图以极快的速度比较这两种结果:不,它们当然不一样
错误消息看起来像内存地址,但这只是因为它调用了DataDriven的默认toString()
方法,该方法以这种方式打印自身。该地址不是比较例程的一部分
检查DataDriven
是否具有equals方法。如果没有,就编写它;如果不能,就根本不能对数据驱动实例使用assertEquals
。如果是,那就太好了-您可以将DataDriven
的一个实例与另一个实例进行比较
或者,查询DataDriven实例以获取一些值,然后对照
“#username”
检查该值。例如:assertEquals(“#username”,test.getUsername())
。我不知道什么是DataDriven
或者它是什么样子,所以我假设它有一个getUsername()
方法。你正在寻找类似的东西(当然,要确保它返回一个字符串
,或者你还在比较guns和grammas。这里,test
是对数据驱动的类和用户名的引用
是一个字符串。字符串不能等于用户名,因为同样的原因,任何给定的枪都不可能与任何给定的外婆相同。这些对象的种类非常不同,因此尝试以极其快速的方式比较这两个结果:不,当然它们不一样
错误消息看起来像内存地址,但这只是因为它调用了DataDriven的默认toString()
方法,该方法以这种方式打印自身。该地址不是比较例程的一部分
检查DataDriven
是否有一个equals方法。如果没有,则编写它,如果不能,则根本不能对DataDriven实例使用assertEquals
。如果有,很好-您可以将DataDriven
的一个实例与另一个实例进行比较
或者,查询数据驱动实例以获取一些值,然后对照“#username”
检查该值。例如:assertEquals(“#username”,test.getUsername())
。我不知道数据驱动的
是什么或者它看起来像什么,所以我假设它有一个getUsername()
方法。您正在寻找类似的东西(当然,要确保它返回一个字符串
,或者您仍然在比较guns和grandmas。assertEquals
对您的WebElement
或ChromeDriver
一无所知。当您说assertEquals(“用户名”,test)时
您正在断言一个字符串等于另一个字符串。在这种情况下,字面上是“#username”
和DataDriven
的实例。比较调用test.toString()
,DataDriven
不会覆盖默认的对象.toString()
。所以您的比较在两方面都是不正确的。@ElliottFrisch我怀疑它甚至调用了toString()
;我认为它确实直接且仅toString()
s错误输出。assertEquals
对您的WebElement
或ChromeDriver
一无所知。当您说assertEquals(“#username”,test);
时,您断言一个字符串等于另一个字符串。在这种情况下,字面上是“#username”
和DataDriven
的一个实例。比较调用了test.toString()
,而DataDriven
没有覆盖默认的对象。toString()
。因此您的比较在两方面都是不正确的。@ElliottFrisch我怀疑它甚至调用了toString()
;我认为它确实直接等于并且仅toString()
s错误输出。感谢您的响应。DataDriven是我用来查找css选择器的类。我想检查预期的选择器是否与网页上的选择器相同,这就是我使用assertEquals()的原因JUnit附带的方法。因此assertEquals()不是DataDriven类中的方法,只是DataDrivenTest类中的方法。字符串“#username”是页面上元素的名称。感谢您的响应。DataDriven是我用于查找css选择器的类。我要检查预期的选择器是否与t上的选择器相同