gpt4 book ai didi

kotlin - Kotlin类实例断言不正确

转载 作者:行者123 更新时间:2023-12-02 13:24:22 25 4
gpt4 key购买 nike

我正在将Java项目转换为Kotlin。我已经将User对象转换为Kotlin,并且在Java中运行现有的JUnit测试时,在两个Kotlin User对象实例之间出现错误。

User.kt:

data class User (
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
var id: Long? = null,
...
)

TestUtil.java
import static org.assertj.core.api.Assertions.assertThat;

public class TestUtil {
public static void equalsVerifier(Class clazz) throws Exception {
Object domainObject1 = clazz.getConstructor().newInstance();
// Test with an instance of the same class
Object domainObject2 = clazz.getConstructor().newInstance();
assertThat(domainObject1).isNotEqualTo(domainObject2);
}
}
assertThat(domainObject1).isNotEqualTo(domainObject2)测试失败,因为我相信Kotlin类上的Java比较未正确完成。如果通过调试器运行此命令,则可以看到 domainObject1domainObject2是不同的实例。

是否可以通过此测试用例?其他Java类使用相同的测试用例,因此它必须适用于Java和Kotlin类。

最佳答案

isNotEqualTo称为equals。 Kotlin类为equals实现了正确的data class方法。因此domainObject1.equals(domainObject2)是正确的。此行为是正确的。

只需查看AssertJ文档:

isNotSameAs(Object other): 
Verifies that the actual value is not the same as the given one,
ie using == comparison.

我认为您应该尝试:
    assertThat(domainObject1).isNotSameAs(domainObject2);

关于kotlin - Kotlin类实例断言不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45687125/

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