我是一名初学者 Java 测试员,我正在尝试在 JUnit 中执行数据驱动测试以进行练习。我想检查预期定位器是否等于我的“UsernameVerification()”方法生成的实际定位器。我目前在我的测试引用的类中有这段代码:
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:预期:<#username> 但为:< DataDriven@6c372fe6 >
预期:#username
实际:DataDriven@6c372fe6
我怀疑问题是 JVM 不知道应该将定位器与 UsernameVerification() 方法的哪一部分进行比较... '.
有没有一种方法可以让“assertEquals”将我的 UsernameVerification() 方法中的“用户名”WebElement 与我输入的预期定位器进行比较,从而使测试通过?
抱歉缺少正确的术语。我研究了一些对象引用在 Java 中的工作方式,我有点了解但不确定如何解决这个问题。
最佳答案
这里,test
是对DataDriven
类实例的引用,"#username"
是一个字符串。字符串不能等于用户名,出于同样的原因,任何给定的枪不可能与任何给定的祖母相同。这些是非常不同种类的物体,因此尝试比较这两个结果非常迅速:不,它们当然不一样。
错误消息看起来像一个内存地址,但这只是因为它调用了 DataDriven 的默认 toString()
方法,它以这种方式打印自己。该地址不是比较例程的一部分。
检查 DataDriven
是否有一个 equals 方法。如果没有,请编写它,如果不能,则根本不能将 assertEquals
与 DataDriven 实例一起使用。如果是,那就太好了 - 您可以将 DataDriven
的一个实例与另一个实例进行比较。
或者,查询 DataDriven 实例的某个值,然后根据 "#username"
检查该值。例如:assertEquals("#username", test.getUsername())
。我不知道 DataDriven
是什么或它看起来像什么,所以我假设它有一个 getUsername()
方法。您正在寻找类似的东西(当然,请确保它返回一个 String
,否则您仍在比较枪支和祖母。
关于java - 为什么我的 Java 单元测试结果将预期结果与内存位置进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59023062/