gpt4 book ai didi

java - 为什么我的 Java 单元测试结果将预期结果与内存位置进行比较?

转载 作者:行者123 更新时间:2023-11-29 04:05:33 24 4
gpt4 key购买 nike

我是一名初学者 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com